我有一个具有特定背景颜色的视图。我用以下代码掩盖了这个视图:
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来通过邮件显示屏幕截图。
提前多多感谢
答案 0 :(得分:1)
解决这个问题的一种方法是使用Quartz函数剪辑视图(CGContextClip,我不记得确切,你需要在文档中稍微深入一点)。 希望这会有所帮助