iOS:我可以在全局队列中截取屏幕截图吗?

时间:2015-04-16 21:59:46

标签: ios screenshot

我想知道如何在全局队列中截取屏幕截图?现在我正在主队列中执行它并且它可以工作,如果我在全局队列中执行它,事情会冻结。我正在使用此屏幕截图代码: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;
}

任何想法?

2 个答案:

答案 0 :(得分:1)

主线程中的任何 UI 操作必须执行

答案 1 :(得分:0)

您正在调用用户界面代码。 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;
    });
}