绘制路径时,CALayer会闪烁

时间:2009-02-04 22:42:46

标签: cocoa-touch core-animation calayer

我使用CALayer通过drawLayer:inContext委托方法显示路径,该方法位于图层所属视图的视图控制器中。每次用户在屏幕上移动他们的手指时,路径都会更新并重新绘制图层。但是,绘图跟不上触摸:显示路径的最后两个点总是有一点延迟。它也会闪烁,但只有在再次显示最后两三分时才会闪烁。如果我只是在视图的drawRect中进行绘制,它可以正常工作,绘图肯定足够快。

有谁知道它为什么会这样?我怀疑它与图层缓冲有关,但我找不到任何关于它的文档。

3 个答案:

答案 0 :(得分:1)

[UIView new]只是[[UIView alloc] init]的缩写。

答案 1 :(得分:1)

setNeedsDisplay方法::

之前提供以下内容
[CATransaction begin];

[CATransaction setValue:[NSNumber numberWithFloat:someDelay] forKey:kCATransactionAnimationDuration];

[aLayer setNeedsDisplay];                    
[CATransaction commit];

答案 2 :(得分:0)

使用layer hosting view可能会有更好的运气。

不使用drawLayer:inContext:方法,而是设置您想要的视图并向其添加CALayer:

UIView *layerHosting = [[UIView alloc] initWithFrame:frame];
[layerHosting setLayer:[[CALayer new] autorelease]];

希望有所帮助!