objective-c - ios:屏幕截图不显示 mask 层

标签 objective-c ios screenshot layer mask

我有一个具有特定背景颜色的 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/

相关文章:

objective-c - 在 NSCollectionView 子类中接受拖动操作

objective-c - 为 Objective-C 对象定义 DTrace 兼容结构

iphone - 出于开发目的,如何使用 iOS 7 的 NSURLSession 及其委托(delegate)方法系列接受自签名 SSL 证书?

iphone - 如何在 SQLite 中更新此列?

c++ - SetWindowDisplayAffinity 在 MFC 窗口中不起作用

ubuntu - 快门 - 打开目录 '/home/username/Pictures' 时出错

ios - 如何在单元格 iOS 中为按钮设置标签?

iOS animationWithDuration 链接第一个动画未显示

ios - 您在哪里更新应用程序内购买消耗品的服务器?

c++ - 截屏到 Direct2D 兼容位图