无法捕获视图层内的蒙版

2024-04-02

因此,我使用以下代码将图像蒙版应用到 UIView 层:

CALayer *maskLayer = [CALayer layer];
UIImage *maskImage = self.image.image;
maskLayer.contents = (id)maskImage.CGImage;
maskLayer.frame = CGRectMake(0.0, 0.0,1235, 935);
self.bgView.layer.mask = maskLayer;

一切都很好,很漂亮,面具覆盖了视图内容并且有效。但是,我正在尝试截取屏幕截图以让用户保存图像。我正在使用以下代码:

UIGraphicsBeginImageContext(captureFrame.size);
[self.bgView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageWriteToSavedPhotosAlbum(viewImage, nil, nil, nil);

框架很好,它保存到照片库中。唯一的问题是应用于图层的蒙版没有显示在 JPG 中。我还尝试将我的 bgView 嵌套到另一个 UIView 中,然后尝试renderInContext:那,但它是同一件事。看起来好像最终的 JPG 中没有应用蒙版。

有任何想法吗?谢谢。


这很不幸,但这就是它的运作方式。这的文档-[CALayer renderInContext:] https://developer.apple.com/library/ios/#documentation/GraphicsImaging/Reference/CALayer_class/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004500 says:

...使用 3D 变换的图层不会渲染,指定背景过滤器、过滤器、compositingFilter 或遮罩值的图层也不会渲染。

CoreAnimation 旨在用于屏幕上的动画绘图;它不是通用图形框架。尝试使用 CoreGraphics 来代替——这并不困难,您将拥有更多的控制权,并且您将获得更高质量的输出。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法捕获视图层内的蒙版 的相关文章

随机推荐

  • 查找字符串中最后一次出现的子字符串,并将其替换

    所以我有一长串相同格式的字符串 我想找到最后一个 每个字符中的一个 并将其替换为 我尝试过使用 rfind 但我似乎无法正确利用它来做到这一点 这应该可以做到 old string this is going to have a full
  • 带有 NSTask 的沙箱

    我启用了沙箱并使用 sbin ping使用 NSTask task setLaunchPath sbin ping task setArguments NSArray arrayWithObjects c10 iPAddress nil 一
  • Qt 颜色选择器小部件?

    我有一个QDialog向用户提供一些选项供其选择的子类 这些选项之一是颜色 我见过QColorDialog https stackoverflow com a 1972272 2062384 我需要一些更简单的东西 这也是一个常规小部件 这
  • 尽管所有测试都通过,但 TeamCity NUnit 构建步骤失败

    我正在设置 TeamCity 来运行一些 NUnit 测试 TeamCity 报告所有测试均已通过 但报告构建失败 并显示错误消息 新构建状态为 NUnit 错误 build status text 深入查看构建日志 我可以看到加载测试中的
  • 带有 AngularJS 指令的类似 Google 的搜索框

    我正在编写一个应用程序 其 UI 方面几乎与 Google 完全相同 我到达登陆页面 我有一个搜索框 提交后会将您引导至结果页面 在这里 您有相同的搜索框和其他指令 您可以在其中切换模式 例如 网络 图像 目前我有 在登陆页面上 带有 ac
  • 循环遍历一个范围以创建嵌套数据树

    我需要创建一个零件号列表 其中显示用于创建第一零件的所有其他子零件 例如部分12345是通过组合构建的abc and def 我有一个顶级部分的列表 以及第二个列表 其中有两列 左侧显示顶级 右侧显示子部分 e g Top Level Pa
  • 如何在 Spring Boot 3 上运行 Swagger 3

    使用带有 Java17 和 Spring Boot 3 0 0 的全新 Spring Initialzr 以及 Springfox Swagger 3 的 pom xml 的额外补充 我一生都无法让 Swagger 页面工作 相反 我得到了
  • UItextView 阿拉伯文文本右对齐

    在 UItextView inputView 上使用我的自定义阿拉伯语键盘 我用阿拉伯语文本填充我的 textView 但无法使书面文本向右对齐 需要帮助将文本向右对齐 BOOL textViewShouldBeginEditing UIT
  • TestFlight Live、QuincyKit 和 Crashlytics 之间的比较

    我将在 AppStore 上启动我的应用程序 我想跟踪崩溃情况并尽快修复它们 如果可能的话 最好还收集一些有关用户活动和其他有用信息的附加信息 为此 我寻找了一些崩溃报告工具 我发现的最有趣的工具是 试飞直播 https testfligh
  • 我的锚链接不会从页面顶部开始

    我不确定发生了什么 我有两个页脚 一个页脚是侧边栏 另一个页脚是页面底部的常规页脚 我底部页脚中的锚标记链接到我的 关于 页面 将我带到页面底部而不是从顶部开始 而侧边栏页脚中的锚标记将我带到页面中间 加载时 其他锚链接也会将我带到页面的中
  • Android 清单文件中的 android:immersive 属性是什么?

    我正在为 Google Glass 开发一个应用程序 但我的活动遇到了问题 当我有 7 到 10 秒没有与他们互动时 他们就结束了 屏幕关闭后 我轻敲玻璃再次唤醒它 我的活动就会消失 我就可以开机了ok glass屏幕 我进行了很多搜索 但
  • NgxMatDatetimePicker 不可分配给 MatDatepickerBase 类型

    今天我使用创建了一个新的 Angular 项目角度 11 0 0 然后我安装了 angular material components datetime picker这是我的 package json 文件中读取的内容的一部分 angula
  • 如何传递对象参数来获取 Web api 中的方法?

    如何将对象参数传递给 get 方法 我搜索了很多 例如如何将参数传递给asp net web api get方法 https stackoverflow com questions 45766147 how to pass paramete
  • Insert 语句中的记录数 (Oracle)

    我想报告 Oracle 插入语句中插入的记录数 我是从语句插入的 因此我可以运行两次选择并进行计数 但我宁愿将其全部保留在一个语句中 有办法吗 在 PL SQL 中执行 INSERTSQL ROWCOUNT给出插入的行数 在 C 中执行 I
  • 使用 Angular 材质按列过滤谓词表

    我想使用谓词过滤器按列过滤我的 mat table 结果 我已经使用了一个简单的过滤器 但它过滤了所有列中的所有数据 我搜索类似的主题 但我不知道如何使用它 我尝试对所有列重复我的代码 但不起作用 请参阅下面的代码
  • 如何在 iPhone 通讯录中搜索特定电话号码?

    我正在开发一个使用 bonjour 连接到另一部 iPhone 的应用程序 它的功能之一是当我连接到其他设备时 它会自动检查我是否有其他人的电话号码 所以我的问题是如何检查我的地址簿中其他设备提供的电话号码 这是从我的地址簿方法之一中提取的
  • 如何以编程方式获取 Linux 中设备/分区的 uuid?

    我对 Linux 编程非常陌生 我的问题是 有没有办法以编程方式读取 Linux 中设备或分区的 UUID 是否有用于用户空间应用程序的 C C API 我发现了一些命令sudo vol id uuid dev sda1 sudo blki
  • Windows Docker mongo 容器不适用于卷挂载

    我有以下 docker 命令 docker run v c data data db mongo 我从 docker mongo 收到以下错误响应 MongoDB starting pid 1 port 27017 dbpath data
  • iOS 谷歌地图更改默认标记拖动行为

    我正在研究 Google 地图 api 目前 当我们尝试拖动标记时 我们必须按住几秒钟 然后 mapView 上升几个点 然后我们才能拖动标记 我想改变这种行为 我可以覆盖minimumPressDuration of UILongPres
  • 无法捕获视图层内的蒙版

    因此 我使用以下代码将图像蒙版应用到 UIView 层 CALayer maskLayer CALayer layer UIImage maskImage self image image maskLayer contents id mas