• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - view.layer drawInContext :UIGraphicsGetCurrentContext() not drawing

[复制链接]
菜鸟教程小白 发表于 2022-12-13 06:51:25 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试将 UIView 绘制到 UIImage 中。这是我正在使用的代码:

UIGraphicsBeginImageContextWithOptions(myView.bounds.size, YES, 0.f);
[myView.layer drawInContext:UIGraphicsGetCurrentContext()];
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

我已验证 myView.bounds.size 有效。 myView 在屏幕上正确显示。但是,img 完全是黑色的(我尝试在 UIImageView 中同时显示并尝试将 JPEG 表示写入文件。)图像尺寸正确,色彩空间(在 JPEG 文件输出中)是 RGB,颜色配置文件是 sRGB 等,这意味着我们不是在处理损坏的图像(在图像/位图数据本身有效的意义上)。我已经在 6.0 模拟器、7.0 模拟器和 7.0.6 设备上测试过这个案例,都一样。该图层没有任何子图层,我尝试将 masksToBounds 设置为 NO ,但没有任何改变。

什么可能导致 View 层不绘制?



Best Answer-推荐答案


你需要改变:

[myView.layer drawInContext:UIGraphicsGetCurrentContext()];

到:

[myView.layer renderInContext:UIGraphicsGetCurrentContext()];

请注意,drawInContext: 默认情况下实际上并没有做任何事情:

The default implementation of this method does not doing any drawing itself. If the layer’s delegate implements the drawLayer:inContext: method, that method is called to do the actual drawing.

Subclasses can override this method and use it to draw the layer’s content. When drawing, all coordinates should be specified in points in the logical coordinate space.

UIView 的层委托(delegate)被设置为 UIView,但它看起来并不像 UIView 必须绘制到提供的上下文。需要对此进行更多调查。

关于ios - view.layer drawInContext :UIGraphicsGetCurrentContext() not drawing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22286863/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap