2015-05-23 2 views
2

Итак, у меня есть UITextView, который должен визуально сидеть на нижнем краю экрана, а затем растягиваться и возвращаться «на экран», «Звездные войны», открывающие сканирование.CATransform3D заставляет мой UITextView исчезнуть?

После долгих поисковых запросов и т. Д., Я чувствую, что у меня есть то, что выглядит как правильный код для работы ... но вместо того, чтобы настраивать перспективный вид, который я искал, это просто заставляет UITextView полностью исчезнуть!

Текстовый вид настроен в раскадровке с пружинами/стойками (без автовыключения), так что он закреплен в верхней и нижней частях основного вида, примерно 20 пикселей с каждой стороны, а пружины активны в обоих направлениях , Его выход подключен к self.infoTextView. Это проявляется, как я ожидаю, если я не буду применять никаких преобразований.

Но когда я запускаю код ниже в viewDidLoad, текстовое представление просто полностью исчезает. Я уверен, что у меня что-то не хватает, но я не могу понять, что это такое.

CGRect frame = self.infoTextView.layer.frame; 
self.infoTextView.layer.anchorPoint = CGPointMake(.5f, 1.0f); 
self.infoTextView.layer.frame = frame; 

CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity; 
rotationAndPerspectiveTransform.m34 = 1.0/500; 
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, 1.57, 0, 1, 0); 
self.infoTextView.layer.transform = rotationAndPerspectiveTransform; 

спасибо!

ответ

1

Есть две вещи, которые вам нужно изменить в коде:

  1. Ось вращения. Вы вращаете его вокруг оси Y. Чтобы получить эффект , вам понадобится изменить поворотное преобразование на вокруг оси X.
  2. Чтобы получить эффект «Звездных войн, открывающий сканирование», вам нужно установить отрицательный угол или отрицательную перспективу.

Кроме того, вы, вероятно, захотите установить более «сильную» перспективу для достижения более драматического эффекта.

Вот пример, основанный на вашем преобразовании кода:

CGFloat angle = -45; 
CATransform3D rotationAndPerspectiveTransform = CATransform3DIdentity; 
rotationAndPerspectiveTransform.m34 = 1.0/200; 
rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, angle/180.0 * M_PI, 1, 0, 0); 
self.infoTextView.layer.transform = rotationAndPerspectiveTransform; 
+0

Это сработало! Благодаря! Теперь у меня есть еще одна проблема, связанная с прокруткой, но это для другого вопроса ... – DanM

Смежные вопросы