当将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

07-27 22:34