Что именно делает removeOnCompletion = NO? - PullRequest
13 голосов
/ 20 января 2011

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

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

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

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

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

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

Ответы [ 3 ]

13 голосов
/ 29 сентября 2012

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

12 голосов
/ 21 января 2011

removedOnCompletion:

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

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

fillMode:

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

0 голосов
/ 06 ноября 2013

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...