iOS UIView Анимация CATransform3DMakeRotation путаница - PullRequest
2 голосов
/ 13 декабря 2011

У меня есть UIView, который я пытаюсь анимировать, переворачивая его вниз, при этом его ось находится внизу вида.Например:

enter image description here

Для этого я пытаюсь использовать анимацию UIView:

[UIView animateWithDuration:3 delay:0 options:UIViewAnimationCurveEaseOut animations:^{

     // Flip Down
     top3.layer.anchorPoint = CGPointMake(0.5, 1.0);
     top3.layer.transform = CATransform3DMakeRotation(M_PI, 1, 0, 0);

 } completion:^(BOOL finished) {

     // Reset?
     //top3.transform = CGAffineTransformMakeScale(1, 1);

 }];

Сейчас это не работает так, как я хочу,Похоже, что представление оживляется от пользователя, а не к.Кажется, что он не дает трехмерного эффекта, который делает его ближе к пользователю при повороте вниз, как показано на моем изображении.Я уверен, что это из-за моего непонимания, как использовать CATransform3DMakeRotation.

Вопросы:

  • Как мне сделать вид ближепользователю как оно падает?Например, наклонить его, как в моем примере с изображением?
  • Когда я устанавливаю свой anchorPoint, он смещает мой взгляд вниз, как я могу предотвратить это и по-прежнему устанавливать мой anchorPoint?
  • С анимацией UIView можно ли использовать параметры замедления? Использовано UIViewAnimationCurveEaseOut в параметрах.
  • Можно ли использовать настройки гравитации?

1 Ответ

2 голосов
/ 13 декабря 2011
  • Это не совсем ясно из вашего вопроса, но похоже, что вы не видите искажения перспективы во время анимации - вид остается прямоугольным при вращении, верно?Чтобы CALayer отображал в перспективе, его transform должен иметь набор элементов m34, как описано здесь .
  • Чтобы компенсировать anchorPoint перемещение слоя вашего вида,вам нужно изменить исходную позицию представления.
  • Да.Есть несколько вариантов анимации в дополнение к тому, который вы используете, и вы можете комбинировать их следующим образом (например): UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction.
  • Базовая анимация на самом деле не имеет никакой концепции физики.В зависимости от эффекта, которого вы достигнете, вы можете достичь его, связав несколько анимаций вместе с конкретными настройками замедления - например, падающий объект, попадающий на твердую поверхность, будет использовать анимацию «замедления» при движении вниз, а затем«Ослабить», если он затем отскочил вверх.
...