从视图创建图像仅在iOS 9上的renderInContext中崩溃

时间:2016-01-25 16:27:41

标签: ios objective-c ios9

我正在尝试从UIView创建图像以对其创建模糊效果。我正如此捕捉图像:

CGFloat scale = 1.0;
if([[UIScreen mainScreen]respondsToSelector:@selector(scale)]) {
    CGFloat tmp = [[UIScreen mainScreen]scale];
    if (tmp > 1.5) {
        scale = 2.0;
    }
}

UIGraphicsBeginImageContextWithOptions(view.bounds.size, NO, scale);


[[view layer] renderInContext:UIGraphicsGetCurrentContext()];
UIImage *screenshot = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenshot;

但是,在iOS 9中,renderInContext步骤失败了。它给出了以下错误:

*** Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'sublayer with non-finite position [-23 inf]'

所以,我有几个问题。

  1. 有谁知道为什么我在我的某个图层中遇到了一个inf位置?这只发生在iOS 9上,并且只发生在一个特定的场景中,而且我不确定这个场景与我们应用程序周围的其他场景有什么不同。

  2. 有什么方法可以解决这个问题并且仍然可以从视图中获取图像吗?我们需要半径为3的自定义模糊,因此使用VisualEffectView似乎无法工作。这让我想起......

  3. 有没有什么办法可以改变VisualEffectView模糊的半径?它只需要在iOS 9中工作,但默认半径对于我们所具有的特定模糊来说太模糊了,因此在不修改半径的情况下使用VisualEffectViews并不理想。

  4. 感谢您提供的任何帮助!

0 个答案:

没有答案