UIView opaque 属性在实现 drawRect 时被忽略:

Posted

技术标签:

【中文标题】UIView opaque 属性在实现 drawRect 时被忽略:【英文标题】:UIView opaque property is ignored when implementing drawRect: 【发布时间】:2013-02-20 22:41:45 【问题描述】:

我有一个覆盖 drawRect: 的 UIView 子类来实现各种效果(渐变背景、不同半径的圆角等)。当我分析应用程序并在模拟器/仪器中启用颜色混合层时,此类的实例永远不会是绿色的,即使它只是绘制一个纯色渐变并且将 opaque 属性设置为 YES。在 drawRect: 中是否需要做一些特别的事情才能尊重该属性?

【问题讨论】:

也许检查alpha的值是1.0? UIView的背景色是不透明色(alpha为1)吗? 【参考方案1】:

可能您应该将“不透明”属性设置为 NO ,正如 Apple Doc 所说:

一个不透明的视图应该用完全不透明的内容填充它的边界——也就是说,内容的 alpha 值应该是 1.0。如果视图是不透明的并且没有填充其边界或包含完全或部分透明的内容,则结果是不可预测的。如果视图完全或部分透明,则应始终将此属性的值设置为 NO。

所以在drawRect方法中,如果你画了一些不透明的图层,你应该确保视图的不透明属性的值设置为NO。

UIView reference

【讨论】:

以上是关于UIView opaque 属性在实现 drawRect 时被忽略:的主要内容,如果未能解决你的问题,请参考以下文章

UIView 中 hiddenalphaclear color 与 opaque 的区别

UIView的不透明alpha和背景颜色之间有什么关系?

跨多个 UIView 子类的单个 drawRect 实现

UIView的使用

Alpha 混合和 UIView 背景颜色

在另一个自定义 UIView 中设置/更改嵌套自定义 UIView 的变量