CALayer мерцает при рисовании пути - PullRequest
0 голосов
/ 05 февраля 2009

Я использую CALayer для отображения пути с помощью метода делегата drawLayer:inContext, который находится в контроллере представления, которому принадлежит слой. Каждый раз, когда пользователь перемещает палец по экрану, путь обновляется и слой перерисовывается. Тем не менее, рисунок не поспевает за касаниями: всегда есть небольшая задержка в отображении последних двух точек пути. Он также мигает, но только при отображении последних двух-трех точек снова. Если я просто делаю рисование в представлении drawRect, оно работает нормально, и рисование определенно достаточно быстрое.

Кто-нибудь знает, почему он так себя ведет? Я подозреваю, что это как-то связано с буферизацией слоя, но я не смог найти никакой документации по этому поводу.

Ответы [ 3 ]

1 голос
/ 21 апреля 2010

[UIView new] это просто сокращение для [[UIView alloc] init].

1 голос
/ 18 ноября 2010

Дайте следующее до setNeedsDisplay метода ::

[CATransaction begin];

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

[aLayer setNeedsDisplay];                    
[CATransaction commit];
0 голосов
/ 11 февраля 2009

Возможно, вам повезет больше, если вы используете слой хостинга .

Вместо использования drawLayer: inContext: метод, установите желаемое представление и добавьте в него CALayer:

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

Надеюсь, это поможет!

...