当将CALayer子类化并实现drawInContext方法时,我假设在其中进行的所有绘图都会显示所有内容,但是相反,如果我设置(例如)borderWidth / borderColor,则CALayer首先将在其自身上绘制边框我的自定义绘图代码。
这是CALayer的子类: @implementation MyCustomCALayer
ojit_pre
在UIView中创建如下内容: - (void)ensureLayer
{
if(myLayer)
return; ojit_pre
发生了什么,是MyCustomCALayer用红色填充了一个矩形,这是我希望看到的,什么也没有,因为我已经实现了drawInContext方法,但是我看到的是一个红色的矩形,上面有一个绿色的边框,总是在顶部,我已经尝试过几乎可以想到的每种组合,以消除绘制的绿色边框并且无法弄清楚。
我的理由是,我想使用CALayer的borderWidth和borderColor和其他属性,而不是创建自己的属性,因为我需要绘制的代码包含边框,填充等,但是我需要渲染做的不是简单的形状。因此,我发现的唯一方法是将borderWidth设置为0,并将自己的属性添加到我的子类中,例如myBorderWidth,这很荒谬。
这是使用最新的iOS SDK完成的,但我想Mac也是一样。
希望这有意义,有什么想法吗?
谢谢!
最佳答案
你不走运; CoreAnimation不支持覆盖基本图层属性的渲染实现。请执行file a bug。