2010-08-11 4 views
2

Я создал кучу подслоев в моем представлении, заполняя каждую графику, так что эффективно спрайты. Тем не менее, когда я звоню [lineLayer setValue:[NSNumber numberWithFloat:0.5] forKeyPath:@"transform.scale"], он кажется «tween» для этого размера вместо того, чтобы просто появляться в новом масштабе.Как остановить анимацию CALayers?

Есть ли способ отключить это поведение? Я просто хочу изменить масштаб напрямую.

Спасибо!

: -Joe

ответ

12

Аааа я просто ответил на свой вопрос ... Я продолжаю делать это здесь!

С помощью:

Вы можете временно отключить слой действия при изменении слоя свойству значения, установив значение kCATransactionDisableActions в операции транзакции в действительности. Любые изменения, сделанные в рамках , не приведут к тому, что транзакция не приведет к анимации . В листинге 2 показан пример, который отключает анимацию fade , которая возникает при удалении aLayer из видимого слоя дерева.

[CATransaction begin]; 
[CATransaction setValue:(id)kCFBooleanTrue 
       forKey:kCATransactionDisableActions]; 
[aLayer removeFromSuperlayer]; 
[CATransaction commit]; 
+0

Просто решил аналогичную проблему. Хороший ответ. – Jessedc

+2

Поскольку @Bo и @Christopher указывали в другом месте на этой странице, свойство setter [[CATransaction setDisableActions: YES]; '- более чистый способ сделать это. – JaredH

10

Кроме того, ради чистоты, используйте эту строку:

[CATransaction setDisableActions:YES]; 

вместо этого:

[CATransaction setValue:(id)kCFBooleanTrue 
       forKey:kCATransactionDisableActions]; 
+0

Хорошая мысль, я не знаю, почему Apple не заявила об этом в их помощь! Хотя это не совсем отдельный ответ ... На самом деле это должно быть добавлено к другому ответу. Благодарю. – jowie

+0

Могу ли я просто добавить, что вам тоже нужна эта линия. –

Смежные вопросы