«Изгиб» UIView в 3D - PullRequest
       14

«Изгиб» UIView в 3D

4 голосов
/ 18 марта 2011

Каков наилучший способ создания CA-анимации, которая дает ощущение искривления вида?

Мой первоначальный подход заключается в создании сетки CALayers, каждый с уникальной матрицей преобразования (у меня есть некоторый опыт работы с OpenGL, и я бы так и поступил в GL).Для этого мне нужно разделить представление на несколько квадратов (каждый из которых представлен CALayer).Вопрос в том, как я могу это сделать.Было бы хорошо просто сделать снимок вида при запуске анимации и использовать его до тех пор, пока анимация не будет завершена (как это могут делать переходы), но я не уверен, как сделать такой снимок.

Любые указатели (особенно со ссылками на примеры кода) будет иметь золотое значение:)

1 Ответ

2 голосов
/ 18 марта 2011

Классический ответ:

Я думаю, что вы, вероятно, ищете CALayer renderInContext: . Каждый UIView имеет CALayer, который вы можете получить через свойство layer . Таким образом, вы можете создать CGContext, который вы хотите (который, вероятно, будет растровым контекстом), сделать так, чтобы слой представления отображал представление в контексте, а затем делать с этими данными все, что вы хотите, независимо от того, разделяет ли он их на кучу UIImages и следовательно, UIImageViews для эффекта CoreAnimation, загрузите его в OpenGL или что-то еще.

Пример кода предоставляется непосредственно Apple в Q & A 1703 , который использует расширения UIKit CoreGraphics для прямого перехода к UIImage и просматривает все доступные окна, чтобы захватить изображение всего экрана. Но это показывает вам суть вещи.


Обновлено в 2015 году:

Начиная с iOS 7, как описано в Q & A 1817 , UIView предоставляет -drawViewHierarchyInRect:afterScreenUpdates:, что сокращает код, необходимый для еще более моментального снимка представления - до четырех строк в примере кода Apple. Похоже, что вопросы и ответы 1703 были отозваны, так как они больше не доступны на стороне Apple; ссылка выше на внешнюю архивную копию. Таким образом, совет 1817 года - это то, чему нужно следовать.

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