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

ios - 如何使用 drawRect 覆盖在 UIView 子类的某些区域中获得透明度

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

我有一个 UIView 子类,其中 drawRect 被覆盖。绘图代码不会填满 View 的整个区域;其中一些是透明的。但是当它在屏幕上绘制时,应该透明的是黑色。 我如何让它正确透明?

如果我将 backgroundColor 设置为 [UIColor clearColor],整个 View 就会消失。如果我将其设置为任何其他颜色,黑色区域将变为该颜色。将 opaque 设置为 NO 具有相同的效果。如果我在 drawRect 的开头绘制一个透明矩形,如下所示:

[[UIColor clearColor] setFill];
UIRectFill( rect );

...然后它又变黑了。我可以在上面的代码中使用另一种颜色,它会绘制那种颜色。如果我使我使用的颜色部分透明,我可以看到黑色透过。

更新: 我的 View 可能具有透明度渐变。我尝试使用一个非常简单的 UIView 子类进行测试,该子类仅在其边界内绘制一个蓝色矩形,并使其他所有内容保持透明。将该 View 设置为 opaque=NO 会按预期呈现。



Best Answer-推荐答案


View 的 opaque 必须设置为 NObackgroundColor 必须设置为 [UIColor clearColor]。此外,使用了错误的混合模式。我们有:

CGContextSetBlendMode(context, kCGBlendModeSourceAtop);

我们需要:

CGContextSetBlendMode(context, kCGBlendModeDestinationOver);

绘图代码是由可以输出代码的图形工具生成的,他们的支持部门发现由于一个错误的错误而生成了错误的混合常数。

关于ios - 如何使用 drawRect 覆盖在 UIView 子类的某些区域中获得透明度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16287650/

回复

使用道具 举报

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

本版积分规则

关注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