ios:屏幕截图不显示遮罩层

时间:2012-02-24 20:46:04

标签: objective-c ios screenshot layer mask

我有一个具有特定背景颜色的视图。我用以下代码掩盖了这个视图:

UIView *colorableView = [[UIView* alloc] init];
colorableView.backgroundColor = someColor;

CALayer *maskLayer = [CALayer layer];
maskLayer.contents = (id)[UIImage imageNamed:maskImageName].CGImage;

colorableView.layer.mask = maskLayer;

好的,那里的一切都很好。视图被屏蔽,因此某些部分是透明的。现在我对此视图进行截图:

CGRect frame = colorableView.frame;

UIGraphicsBeginImageContext(frame.size);

CGContextRef c = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(someUninterestingCodeToGetACorrectPosition);

[self.view.layer renderInContext:c];
UIImage *screenShotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

return screenShotImage;

截取屏幕截图(实际上我也在视图上方显示了一些其他内容,并且也会在屏幕截图中显示),但不知何故,掩码无法识别。这意味着我得到的是一个全彩色视图(一个矩形)的屏幕截图,没有遮罩隐藏它的某些部分。

我猜'UIGraphicsGetImageFromCurrentImageContext()`不适用于遮罩层,所以我该怎么办呢?我需要有一个UIImage来通过邮件显示屏幕截图。

提前多多感谢

1 个答案:

答案 0 :(得分:1)

解决这个问题的一种方法是使用Quartz函数剪辑视图(CGContextClip,我不记得确切,你需要在文档中稍微深入一点)。 希望这会有所帮助