UIKit: CGAffineTransforms и составные анимации - PullRequest
1 голос
/ 12 июля 2011

Я заметил, что при анимации вещей в UIKit некоторые типы анимации могут быть скомпонованы с использованием стандартных блочных анимаций, а другие - нет.Например, view.transform вмешивается в view.frame, но не в view.center.Документированы ли эти вещи где-нибудь?

В связанной заметке из-за этих проблем с компоновкой я часто прибегал к анимации, в основном с использованием CGAffineTransforms, поскольку их можно очень легко создавать.Это хорошая идея?Кажется, что применение трансформации под капотом отличается от простого изменения рамки, поэтому я не уверен, стоит ли использовать их для постоянного перемещения вида или изменения его размера.Переплетаются ли CGAffineTransforms и связанные с view.frame изменения вообще?

Спасибо!

1 Ответ

0 голосов
/ 22 августа 2011

Что бы это ни стоило, вот позиция Apple по этому вопросу:

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

Источник: Просмотреть руководство по программированию для iOS, Архитектура вида и окна

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

Я также определил, что CGAffineTransforms, по-видимому, изменяют основное визуализированное изображение вида, а не его содержимоепоэтому (например) применение CGAffineTransformScale принципиально отличается от расширения кадра.Я не уверен, действительно ли это так, или же это зависит от contentMode / других факторов.

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

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