Как я подаю заявку, перспектива преобразовывают к UIView?

199
задан TheNeil 14 May 2019 в 06:41
поделиться

2 ответа

Как Ben сказал, необходимо будет работать со слоем UIVIEW, с помощью CATransform3D для выполнения вращения слоя. Прием для получения перспективной работы, как описанный здесь , должен непосредственно получить доступ к одной из ячеек матрицы CATransform3D (m34). Матричная математика никогда не была моей вещью, таким образом, я не могу объяснить точно, почему это работает, но это делает. Необходимо будет установить это значение к отрицательной части для начального преобразования, затем подать заявку вращение слоя преобразовывает к этому. Необходимо также быть в состоянии сделать следующее:

UIView *myView = [[self subviews] objectAtIndex:0];
CALayer *layer = myView.layer;
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity;
rotationAndPerspectiveTransform.m34 = 1.0 / -500;
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 45.0f * M_PI / 180.0f, 0.0f, 1.0f, 0.0f);
layer.transform = rotationAndPerspectiveTransform;

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

А полный пример этого (с кодом) может быть найден здесь , где я реализовал сенсорное вращение и масштабирующийся на нескольких CALayers, на основе примера Bill Dudney. Новейшая версия программы, в самом конце страницы, реализует этот вид перспективной операции. Код должен быть довольно прост читать.

sublayerTransform, к которому Вы обращаетесь в Вашем ответе, является преобразованием, которое применяется к подуровням Вашего UIView's CALayer. Если у Вас нет подуровней, не волнуйтесь об этом. Я использую sublayerTransform в своем примере просто, потому что существует два CALayers, содержавшие на одном слое, который я поворачиваю.

327
ответ дан Manoj Rlogical 23 November 2019 в 05:09
поделиться

Можно только использовать Базовый GraphicsВ (Кварц, 2D только) преобразовывает, непосредственно относился к свойству преобразования UIVIEW. Для получения эффектов в coverflow необходимо будет использовать CATransform3D, которые применяются в 3-D пространстве, и так могут дать Вам вид в перспективе, который Вы хотите. Можно только применить CATransform3Ds к слоям, не представления, таким образом, Вы оказываетесь перед необходимостью переключаться на слои для этого.

Выезд образец "CovertFlow", который идет с XCode. Это только для Mac (т.е. не для iPhone), но большая передача понятий хорошо.

7
ответ дан Ben Gottlieb 23 November 2019 в 05:09
поделиться