iOS: 全局队列可以截图吗?
iOS: can I take screenshot on global queue?
请问如何在全局队列中截图?现在我在主队列中执行它并且它有效,如果我在全局队列中执行它,事情就会冻结。我正在使用此屏幕截图代码:iOS: what's the fastest, most performant way to make a screenshot programmatically?
我还尝试了以下代码来拍摄 self.view 的快照,但它也不起作用:
+(UIImage *)snapshot_of_view:(UIView*)view {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
有什么想法吗?
任何UI操作必须在主线程中执行。
您正在调用用户界面代码。 UI 代码必须在主线程上,因为该线程具有主 运行 循环和内容。
你需要在主线程上做:
+(UIImage *)snapshot_of_view:(UIView*)view {
dispatch_async(dispatch_get_main_queue(), ^{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
});
}
请问如何在全局队列中截图?现在我在主队列中执行它并且它有效,如果我在全局队列中执行它,事情就会冻结。我正在使用此屏幕截图代码:iOS: what's the fastest, most performant way to make a screenshot programmatically? 我还尝试了以下代码来拍摄 self.view 的快照,但它也不起作用:
+(UIImage *)snapshot_of_view:(UIView*)view {
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
有什么想法吗?
任何UI操作必须在主线程中执行。
您正在调用用户界面代码。 UI 代码必须在主线程上,因为该线程具有主 运行 循环和内容。
你需要在主线程上做:
+(UIImage *)snapshot_of_view:(UIView*)view {
dispatch_async(dispatch_get_main_queue(), ^{
UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, [UIScreen mainScreen].scale);
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
});
}