Что именно удаляетсяOnCompletion = НЕТ делать?

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

Признать эти факты:

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

B) Я сделал эксперимент. removedOnCompletion = NO не будет иметь тот же эффект, что и kCAFillModeBoth или kCAFillModeForwards. Точнее: это абсолютно не влияет на то, как выглядит результат при анимации. Wether он "удален" или нет, он, кажется, вообще не влияет на Дерево презентаций.

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

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

Ответы

Ответ 1

removedOnCompletion:

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

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

fillMode:

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

Ответ 2

Если removedOnCompletion - ДА, анимация будет удалена по завершении и вообще не будет "заполнять вперед". Поэтому, если вы хотите использовать fillMode, вы должны установить removedOnCompletion в NO.

Ответ 3

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