0

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

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

4

3 回答 3

1

[UIView new]只是 . 的简写[[UIView alloc] init]

于 2010-04-20T22:30:59.333 回答
1

在方法之前给出以下内容setNeedsDisplay::

[CATransaction begin];

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

[aLayer setNeedsDisplay];                    
[CATransaction commit];
于 2010-11-18T11:09:22.517 回答
0

使用图层托管视图可能会更好。

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

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

希望有帮助!

于 2009-02-10T22:22:49.473 回答