Поворот UIView до анимации - PullRequest
0 голосов
/ 03 февраля 2012

Я бы хотел повернуть экземпляр моего подкласса UIView, прежде чем масштабировать его с помощью анимации.К сожалению, код у меня вращается и масштабируется в той же анимации. Как я могу завершить или вызвать вращение до того, как произойдет масштабная анимация?

- (void) layoutSubviews {
    self.transform = CGAffineTransformMakeRotation(myAngle);

    // other layout...
}

- (void) showMyView {
    [UIView setAnimationCurve:something];
    [UIView setAnimationDuration:somethingElse];

    self.layer.transform = CATransform3DMakeScale(x, y, z);

    [UIView commitAnimations];
}

1 Ответ

3 голосов
/ 03 февраля 2012

Прежде всего Apple рекомендует использовать синтаксис Block для анимации.
Кроме того, это облегчает достижение того, что вы хотите.

Сначала создайте анимацию для вашего вращения, а если это сделано, выполните масштабирование.
Пример кода:

    [UIView animateWithDuration:0.5 
                 animations:^{
                     // This rotates the layer by 90°
                     self.layer.transform = CGAffineTransformMakeRotation(M_PI/2.0);
                 }
                 // On completition start the scaling
                 completion:^(BOOL finished){
                     if (finished) {
                         [UIView animateWithDuration:0.5 
                                          animations:^{
                                              // This scales
                                              self.layer.transform = CGAffineTransformMakeScale(2.0, 2.0);
                                          }
                          ];
                     }
                 }
    ];  

Это также возможно при использовании "старого" стиля анимации, который вы используете, но сложнее реализовать делегат анимации и т. д. *

...