CATransform3D против CGAffineTransform? - PullRequest
23 голосов
/ 20 февраля 2009

Какая разница между этими двумя?

Я уверен, что у них есть свои плюсы и минусы, и в каких ситуациях они лучше выступают.

Какие-нибудь ресурсы, которые сравнивают эти два?

Один лучше для анимации (я представляю CATransform3D)? Почему?

Также я думаю, что где-то читал, что ясность текста может быть проблемой, лучше ли при масштабировании текста?

Ответы [ 2 ]

23 голосов
/ 20 февраля 2009

Как сказал MSN, они используются в разных случаях. CGAffineTransform используется для 2-D манипулирования NSViews, UIViews и других элементов 2-D Core Graphics.

CATransform3D - это структура Core Animation, которая может выполнять более сложные трехмерные манипуляции с CALayers. CATransform3D имеет ту же внутреннюю структуру, что и матрица представления модели OpenGL, что имеет смысл, когда вы понимаете, что Core Animation построена на OpenGL (CALayers - это оболочки для текстур OpenGL и т. Д.). Я обнаружил, что это сходство внутренней структуры в сочетании с некоторыми хорошими вспомогательными функциями, которые предоставляет Apple, может позволить вам сделать некоторые аккуратные оптимизации OpenGL, поскольку я публикую здесь .

Когда дело доходит до выбора, который действительно используется, спросите себя, собираетесь ли вы работать с представлениями непосредственно в 2-D пространстве (CGAffineTransform) или с базовыми слоями Core Animation в 3-D (CATransform3D). Я использую CATransform3D чаще, но это потому, что я провожу много времени с Core Animation.

7 голосов
/ 20 февраля 2009

Один предназначен для линейных 2d преобразований, другой - для трехмерных проектируемых преобразований. По крайней мере, это то, что я могу почерпнуть из документации.

Если вам не нужно визуализировать 3D-изображение на экране, используйте аффинное преобразование. В противном случае используйте 3d-преобразование. 3d-преобразование - это, по сути, матрица 4x4, а 2d-аффинная - 3x2.

...