3

我有以下代码:

if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {
    UIGraphicsBeginImageContextWithOptions(mainView.bounds.size, NO, [UIScreen mainScreen].scale);
}
else {
    UIGraphicsBeginImageContext(mainView.bounds.size);
}

[mainView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *saveImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

在 mainView 中,使用该方法时,saveImage 中没有出现掩码子视图。但是,我知道在 iOS 4 之前曾经有一个 UIGetScreenImage 方法确实捕获了此类活动。我的问题是,在 iOS 6 中捕获 CALayer 活动的最佳方式是什么?UIGetScreenImage 仍然是私有的吗?

4

2 回答 2

2

我想大约一周前有一个类似的问题:Mask does not work when capture a uiview to a uiimage

在 iOS6 上捕获应用了蒙版的 UIView 时出现问题(顺便说一句,在 iOS 7 中已修复):您捕获了图像但未应用蒙版。

我发布了一个冗长的解决方案,其中涉及手动将蒙版应用于捕获的图像。这不是很困难,我也做了一个演示项目。你可以在这里下载:

https://bitbucket.org/reydan/so_imagemask

如果我没有正确理解您的问题,请告诉我,以便我删除此答案。

于 2013-07-26T12:00:04.447 回答
0

尝试获取表示层,因为它将包含层的状态。

[mainView.layer.presentationLayer renderInContext:UIGraphicsGetCurrentContext()];

https://developer.apple.com/library/mac/documentation/graphicsimaging/reference/CALayer_class/Introduction/Introduction.html#//apple_ref/occ/instm/CALayer/presentationLayer

于 2013-07-24T13:38:36.510 回答