我有一个UIView
子类,其中drawRect
被覆盖。绘图代码无法填满视图的整个区域。其中一些是透明的。但是当它在屏幕上绘制时,应该透明的是黑色。如何使其具有适当的透明度?
如果将backgroundColor
设置为[UIColor clearColor]
,整个视图将消失。如果我将其设置为任何其他颜色,则黑色区域将变为该颜色。将opaque
设置为NO
具有相同的效果。如果我在drawRect
的开头绘制一个透明矩形,如下所示:
[[UIColor clearColor] setFill];
UIRectFill( rect );
...然后又变黑了。我可以在上面的代码中使用另一种颜色,它绘制出该颜色。如果我使用部分透明的颜色,则可以看到黑色透出。
更新:我的视图具有透明度渐变可能是相关的。我尝试使用一个非常简单的
UIView
子类进行测试,该子类仅在其边界内绘制了一个蓝色矩形,并使其他所有内容保持透明。将该视图设置为opaque=NO
将按预期方式呈现。 最佳答案
该视图的opaque
必须设置为NO
,而backgroundColor
设置为[UIColor clearColor]
。另外,使用了错误的混合模式。我们有:
CGContextSetBlendMode(context, kCGBlendModeSourceAtop);
我们需要:
CGContextSetBlendMode(context, kCGBlendModeDestinationOver);
绘图代码是由可输出代码的图形工具生成的,而他们的支持部门则发现由于一次错误的错误而生成了错误的混合常数。