向CALayer添加子图层仅适用于mouseDown方法

时间:2012-08-21 19:44:29

标签: objective-c macos core-animation calayer nsview

我正在尝试将CALayer添加到NSView。我没有的代码是

-(void) InsertCALayer
{
    newLayer = [CALayer layer];
    newLayer.frame = NSMakeRect(10, 10, 100, 100);
    newLayer.backgroundColor = CGColorCreateGenericRGB(0.5, 0.5, 0.5, 1.0);
    [rootLayer addSublayer:newLayer];
}

但是,此代码没有显示任何内容。奇怪的是,我还实现了一个mouseDown事件处理程序,代码在那里工作:

-(void) mouseDown:(NSEvent *)theEvent
{   
    newLayer = [CALayer layer];
    newLayer.frame = NSMakeRect(10, 10, 100, 100);
    newLayer.backgroundColor = CGColorCreateGenericRGB(0.5, 0.5, 0.5, 1.0);
    [rootLayer addSublayer:newLayer];
}

我可以确认这两种方法肯定都被调用了,但是我很困惑为什么一个有效,另一个没有。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

-(void) InsertCALayer
在视图heirarchy加载后调用

方法?如果在InsertCaLayer方法中调试器中设置断点,并且' po' rootLayer你有一个有效的对象吗?

在对视图进行更改之前,必须完全加载视图层次结构。我想知道这是不是问题。让我知道!