我想从我的屏幕创建视频,为此我将捕获视图但由于某种原因我不想使用renderInContext:
。我现在正在使用drawViewHierarchyInRect:
,但这仅限于iOS 7,我的应用程序也支持早期的iOS版本。我是否会因使用drawViewHierarchyInRect:
而被罚款?
这是我的代码
UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0);
[self drawViewHierarchyInRect:self.bounds afterScreenUpdates:YES];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
答案 0 :(得分:3)
我知道您不想使用renderInContext
,因为效率较低,但对于7之前的iOS版本,您应该使用的技术(因为如果您尝试使用在7.0之前的iOS版本中使用drawViewHierarchyInRect
,应用程序将崩溃)。所以,这是一个在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();
的版本:
{{1}}
这样,您将使用更高效的iOS 7+机制,但在早期版本上运行时至少不会崩溃。