我正在使用 aCALayer
通过drawLayer:inContext
委托方法显示路径,该方法位于图层所属视图的视图控制器中。每次用户在屏幕上移动手指时,路径都会更新并重新绘制图层。但是,绘图跟不上触摸:在显示路径的最后两个点时总是有轻微的延迟。它也会闪烁,但只是在再次显示最后两三个点时。如果我只是在视图中进行绘图drawRect
,它可以正常工作并且绘图绝对足够快。
有谁知道它为什么会这样?我怀疑这与图层缓冲有关,但我找不到任何有关它的文档。
我正在使用 aCALayer
通过drawLayer:inContext
委托方法显示路径,该方法位于图层所属视图的视图控制器中。每次用户在屏幕上移动手指时,路径都会更新并重新绘制图层。但是,绘图跟不上触摸:在显示路径的最后两个点时总是有轻微的延迟。它也会闪烁,但只是在再次显示最后两三个点时。如果我只是在视图中进行绘图drawRect
,它可以正常工作并且绘图绝对足够快。
有谁知道它为什么会这样?我怀疑这与图层缓冲有关,但我找不到任何有关它的文档。
[UIView new]
只是 . 的简写[[UIView alloc] init]
。
在方法之前给出以下内容setNeedsDisplay
::
[CATransaction begin];
[CATransaction setValue:[NSNumber numberWithFloat:someDelay] forKey:kCATransactionAnimationDuration];
[aLayer setNeedsDisplay];
[CATransaction commit];
使用图层托管视图可能会更好。
不要使用 drawLayer:inContext: 方法,而是设置您想要的视图并向其添加 CALayer:
UIView *layerHosting = [[UIView alloc] initWithFrame:frame];
[layerHosting setLayer:[[CALayer new] autorelease]];
希望有帮助!