gpt4 book ai didi

ios - 不使用 renderInContext 捕获 UIView :

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:05:31 31 4
gpt4 key购买 nike

我想从我的屏幕创建视频,为此我将捕获 View ,但由于某些原因我不想使用 renderInContext:。我现在正在使用 drawViewHierarchyInRect:,但这仅限于 iOS 7,我的应用程序也支持早期的 iO​​S 版本。使用 drawViewHierarchyInRect: 会被罚款吗?

这是我的代码

UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

最佳答案

我知道您不想使用 renderInContext 因为它效率较低,但对于 7 之前的 iOS 版本,这是您应该使用的技术(因为如果您尝试使用 drawViewHierarchyInRect 在 iOS 7.0 之前的版本中,应用程序会崩溃)。因此,这是一个在可用时使用 drawViewHierarchyInRect,但在不可用时使用 renderInContext 的再现:

UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0);

if ([self respondsToSelector:@selector(drawViewHierarchyInRect:afterScreenUpdates:)]) {
BOOL success = [self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
NSAssert(success, @"drawViewHierarchyInRect failed");
} else {
[self.layer renderInContext:UIGraphicsGetCurrentContext()];
}

UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

这样,您将使用适用于 iOS 7+ 的更高效机制,但它至少不会在早期版本上运行时崩溃。

关于ios - 不使用 renderInContext 捕获 UIView :,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23197848/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com