2012-06-01 4 views
2

Я использую эти символы, чтобы переместить CALayer:Как изменить время анимации CALayer по умолчанию?

CGPoint position = self.position; 
position.x += 10; 
position.y += 10; 
self.position = position; 

Там есть анимация по умолчанию, когда я изменить положение слоя без анимации вызовет Этот вызов запаздывание при движении слоя, когда я использовать эти символы in touchesMoved: withEvent :.

Что я хочу сделать, это удалить анимацию по умолчанию и сразу же переместить слой, чтобы он мог быстро реагировать на событие касания, точно так же, как и свойство «center» UIView.

Что мне делать? специальный thx!

+0

возможно дубликат [Отключение неявные анимации в - \ [CALayer setNeedsDisplayInRect: \]] (http://stackoverflow.com/questions/2244147/disabling-implicit-animations-in-calayer-setneedsdisplayinrect) –

ответ

8

Другой плакат имел правильную идею, но не дает достаточной информации.

Если вы хотите изменить свойства слоя сразу, без анимации, вам нужно поместить эти изменения внутри CATransaction где отключить действия:

[CATransaction begin]; 
[CATransaction setAnimationDuration: 1.0/30.0]; 
[CATransaction setDisableActions: TRUE]; 
//Put layer changes you want to take place without animation here. 
[CATransaction commit]; 
+0

приятно! работает хорошо. – zumzum

1

Просто установите

[CATransaction setDisableActions:YES]; 

это сделает слой движение без лага