Анимации применяются к слою представления, а не к слою модели. Вы должны применить свои изменения к обоим. Это причудливый способ сказать, что когда вы что-то оживляете, вам также нужно установить это напрямую.
...
[icon.layer setPosition:CGPointMake(senderView.center.x, icon.center.y)];
[icon.layer setTransform:CATransform3DMakeScale(0.1, 0.1, 1.0)]];
[icon.layer setAlpha:0.1];
(Обратите внимание, что здесь вы можете анимировать center
представления, а не position
. Слоя).
Глава 7 из Программирование на iOS 5 «Раздвигая пределы» содержит страницы и страницы, если вам нужны все подробности. Вот раздел на removedOnCompletion
:
Иногда вы видите, что люди рекомендуют установить для параметра selectedOnCompletion значение NO, а для параметра fillMode - значение kCAFillModeBoth. Это не хорошее решение. По сути, анимация продолжается вечно, что означает, что слой модели никогда не обновляется. Если вы спросите значение свойства, вы продолжите видеть значение модели, а не то, что видите на экране. Если после этого вы попытаетесь неявно анимировать свойство, оно не будет работать правильно, поскольку CAAnimation все еще работает. Если вы когда-либо удаляете анимацию, заменяя ее другой с тем же именем, вызывая removeAnimationForKey: или removeAllAnimations, старое значение возвращается назад. Вдобавок ко всему, это тратит впустую память.