我有一个具有特定背景颜色的 View 。我用以下代码屏蔽了这个 View :
UIView *colorableView = [[UIView* alloc] init];
colorableView.backgroundColor = someColor;
CALayer *maskLayer = [CALayer layer];
maskLayer.contents = (id)[UIImage imageNamed:maskImageName].CGImage;
colorableView.layer.mask = maskLayer;
好的,那里一切正常。 View 被遮盖,因此某些部分是透明的。现在我制作这个 View 的屏幕截图:
CGRect frame = colorableView.frame;
UIGraphicsBeginImageContext(frame.size);
CGContextRef c = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(someUninterestingCodeToGetACorrectPosition);
[self.view.layer renderInContext:c];
UIImage *screenShotImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return screenShotImage;
截取屏幕截图有效(实际上我也在 View 上方显示了一些其他内容,这些内容也显示在屏幕截图中),但不知何故,无法识别 mask 。这意味着我得到的是全彩色 View (矩形)的屏幕截图,没有掩码隐藏它的某些部分。
我猜想“UIGraphicsGetImageFromCurrentImageContext()”不适用于 mask 层,那么我能做些什么呢?我需要一个 UIImage 来显示邮件中的屏幕截图。
提前致谢
最佳答案
解决此问题的一种方法是使用 Quartz 函数来裁剪 View (CGContextClip,我记不太清了,您需要深入了解文档)。 希望这会有所帮助
关于objective-c - ios:屏幕截图不显示 mask 层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9437788/