Почему преобразование presentationLayer представляет состояние законченной анимации во время работы анимации? - PullRequest
1 голос
/ 19 мая 2009

В документации написано:

Дерево презентации содержит значения, которые в настоящее время представлен пользователю в виде анимации происходит. Например, установка новое значение для backgroundColor слой сразу меняет значение в дерево слоев. Тем не менее Значение backgroundColor в соответствующий слой в Дерево презентации будет обновлено интерполированные цвета как они есть отображается пользователю.

Теперь правда из моего жесткого 8-часового тестирования в песочнице с одним видом и анимацией. Во время анимации я прошу:

CATransform3D currentTransform = [(CALayer *) [self.layer presentationLayer] transform]

Я проверяю значения currentTransform для m11 и m12, чтобы вычислить текущий угол поворота.

Когда я настроил поворот на 90 градусов, происходят две вещи, в то время как анимация происходит и не заканчивается:

  • иногда мой вычисленный угол, основанный на currentTransform, равен 0,0, хотя вид повернут на некоторый угол и определенно не равен 0,0.

  • и иногда (чаще всего) это просто целевое значение 90 градусов.

Но я никогда не получаю то, что хочу: текущее состояние анимации. Я долго искал в сети, и разработчики, кажется, редко используют это. Так что это либо ошибка во фреймворке, либо ошибка в документации, либо мой код выше для получения текущего видимого преобразования совершенно неверен.

1 Ответ

1 голос
/ 19 мая 2009

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

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

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

...