Как я могу остановить анимацию CALayers? - PullRequest
1 голос
/ 11 августа 2010

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

Спасибо!

: - Джо

Ответы [ 2 ]

12 голосов
/ 11 августа 2010

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

Из справки:

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

[CATransaction begin];
[CATransaction setValue:(id)kCFBooleanTrue
                 forKey:kCATransactionDisableActions];
[aLayer removeFromSuperlayer];
[CATransaction commit];
10 голосов
/ 16 января 2013

Также, для чистоты, используйте эту строку:

[CATransaction setDisableActions:YES];  

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

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