Подтвердить что ты не робот

Что делает fillMode?

Документация не очень-то говорит о том, что это технически делает.

fadeInAnimation.fillMode = kCAFillModeForwards;

Я действительно не вижу эффекта этого. У меня есть представление с альфой, установленным в 0.0. Затем я угасаю его. Но когда я раскомментирую линию, она ничего не меняется. Такое же поведение. Я хотел бы понять, что делает этот fillMode.

4b9b3361

Ответ 1

Из Документация протокола CAMediaTiming:

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

Это определяет, что происходит в конце вашей анимации. По умолчанию он установлен в kCAFillModeRemoved, что означает, что изменения анимации отменены, когда анимация завершена. Если вы переключите его на kCAFillModeForwards, изменения, вызванные анимацией, будут зависать.

Обратите внимание, что вам также, вероятно, нужно будет установить для свойства removedOnCompletion значение NO, чтобы ваша анимация не удалялась, что сделало бы этот параметр неэффективным.

Ответ 2

позвольте мне дать более четкий ответ:
хотя внешний вид устанавливает для анимации fillMode свойство kCAFillModeForwards (или kCAFillModeBoth), и в то же время установка removedOnCompletion на NO может сохранить ваш уровень в его конечном состоянии, когда анимация завершена , но это использование fillMode не разработан.. и на самом деле навредить, если у вас есть другая анимация, добавьте те же keyPath

(кстати, правильный подход для сохранения конечного состояния анимации заключается в изменении значения свойства для соответствия финальному кадру анимации.)

то, что fillMode действительно использует, связано с дочерней анимацией в сгруппированной анимации, поэтому вы можете указать конкретную дочернюю анимацию в желаемом состоянии