【发布时间】:2009-10-09 14:21:48
【问题描述】:
我正在做一些不寻常的事情。我正在尝试将我的应用程序中的所有组件都染成红色(您可能已经从我那里看到了一些关于此的其他帖子,但这是更具体的内容)。为此,我拦截了对 CALayer 的 drawInContext: 的所有调用,并在调用原始方法后,使用 kCGBlendModeDarken(或 kCGBlendModeMultipy)将红色合成到图层上。这对于大多数 UI 组件来说都非常有效。但是,当我使用 UILabels 执行此操作时,以前透明的背景变为白色(嗯,实际上是红色的白色)。您可以在我的工具栏的这张图片中看到它的样子
http://www.thinkastronomy.com/RedLabels.png
请注意,UIImage 也没有着色,但这是另一个问题的主题。
那么任何人都可以解释为什么 UILabel 背景会通过这种合成变得可见吗?它似乎几乎独立于合成模式而发生。我怎样才能防止这种情况发生?
【问题讨论】:
标签: iphone cocoa-touch quartz-graphics uilabel