Уровень представления представления осуществляется анимацией, даже если он остановлен. При удалении анимации уровень представления будет возвращен к значению уровня модели представления, поэтому вы получите результат, как указано.

mation предоставляет свойство removeOnCompletion, которое по умолчанию имеет значение YES.

Давайте признаем эти факты:

А) Базовая анимация влияет только на дерево презентаций, но не на дерево моделей. Когда анимация завершена, вы видите все, что установлено в дереве моделей. Например, вы можете установить fillMode на kCAFillModeBoth, который будет заменять значение из дерева презентаций на дерево моделей после завершения анимации. Это заставляет вашу анимацию не возвращаться назад (что наиболее вероятно, что вы хотите).

Б) Я сделал эксперимент. removeOnCompletion = НЕТ будетНЕ имеют тот же эффект, что и kCAFillModeBoth или kCAFillModeForwards. Чтобы быть более точным: он абсолютно не влияет на то, как выглядит результат, когда анимация завершена. Независимо от того, «удалено» оно или нет, оно, похоже, никак не влияет на Дерево презентаций.

Чтобы объяснить, что на самом деле делает removeOnCompletion, документация слишком слаба в этом отношении. Я не понимаю Может кто-нибудь объяснить, что именно будет удалено, и какая польза от его удаления?

Я предполагаю, что Apple говорит о самом объекте-аниматоре, который добавляется в слой с помощью -addAnimation: forKey: ... но опять же: какой смысл держать его?

 DZoki01917 мар. 2018 г., 12:57
Отличное видео на WWDC об этом:developer.apple.com/videos/play/wwdc2017/235

Ответы на вопрос(3)

даже если он остановлен. При удалении анимации уровень представления будет возвращен к значению уровня модели представления, поэтому вы получите результат, как указано.

removedOnCompletion  ДА, анимация будет удалена после завершения, и «заполнять вперед» вообще нечего. Так что если вы хотите использоватьfillMode вы должны установитьremovedOnCompletion вNO.

 Ammar Mujeeb23 февр. 2016 г., 08:09
да, режим заполнения не оказывает никакого влияния, поскольку мы удаляем анимацию, поэтому объект возвращается в исходное состояние.
Решение Вопроса

removedOnCompletion:

По сути, анимация удаляется из действий слоя, когда эта анимация завершена.

YES - Если вы собираетесь использовать анимацию только один раз, вам не нужно использовать метод делегата для удаления анимации из слоя по завершении.

fillMode:

Это свойство контролирует, что происходит визуально после завершения анимации, в зависимости от типа указанного режима заполнения.

Ваш ответ на вопрос