【发布时间】:2012-02-24 20:46:04
【问题描述】:
我有一个具有特定背景颜色的视图。我用下面的代码屏蔽了这个视图:
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 来在邮件中显示屏幕截图。
提前非常感谢
【问题讨论】:
标签: objective-c ios screenshot layer mask