Положение слоя перескакивает при запуске (Core) Animation

Итак, я пытаюсь создать эффект переворота плитки, как на Windows Phone 7.

Пока у меня есть следующий код, но у меня есть пара запросов.

CALayer *layer = self.theRedSquare.layer;
CATransform3D initialTransform = self.theRedSquare.layer.transform;
initialTransform.m34 = 1.0 / -1000;

[UIView beginAnimations:@"Scale" context:nil];
[UIView setAnimationDuration:1];
[UIView setAnimationCurve: UIViewAnimationCurveEaseInOut];
layer.transform = initialTransform;
layer.anchorPoint = CGPointMake(-0.3, 0.5);

CATransform3D rotationAndPerspectiveTransform = self.theRedSquare.layer.transform;

rotationAndPerspectiveTransform = CATransform3DRotate(rotationAndPerspectiveTransform, M_PI , 0 , -self.theRedSquare.bounds.size.height/2, 0);

layer.transform = rotationAndPerspectiveTransform;

[UIView setAnimationDelegate:self];
[UIView commitAnimations];

1. Почему мой красный квадрат (простой вид пользовательского интерфейса) переводится вправо в начале анимации?

2. Можно ли установить позицию для точки привязки в родительском представлении? На данный момент я произвольно устанавливаю его относительно текущего представления.

Заранее благодарим за любые указатели.

До анимации

Before

Во время анимации (обратите внимание, что квадрат сдвинулся вправо)

During

После анимации (обратите внимание, что квадрат сдвинулся вправо)

After

Видео добавлено: пример видео

6
задан JonB 7 February 2012 в 23:43
поделиться