2012-02-02 1 views
0

애니메이션으로 크기를 조정하기 전에 UIView 하위 클래스의 인스턴스를 회전하고 싶습니다. 불행히도 동일한 애니메이션에서 회전 및 크기 조정 코드가 있습니다. 스케일 애니메이션이 발생하기 전에 회전을 완료하거나 강제로 회전시킬 수 있습니까?애니메이션이 발생하기 전에 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]; 
} 

답변

3

첫째, 애니메이션 물건에 대한 블록 구문을 사용하는 애플에 의해 권장합니다.
그 외에도 원하는 것을 쉽게 달성 할 수 있습니다.

먼저 회전을위한 애니메이션을 만들고, 끝나면 스케일링 작업을하십시오.
코드 예제 :

[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); 
              } 
          ]; 
        } 
       } 
    ]; 

그것은 당신이 사용하는 "오래된"애니메이션 스타일로도 가능하지만, 애니메이션 위임 등 ...

+0

아 좋은 아이디어를 구현하기 위해 더 복잡합니다. 위의 코드에서 첫 번째 애니메이션 기간은 0 일 수 있습니까? – SundayMonday

+1

예, 실제로 애니메이션을 적용 할 필요는 없습니다. 보기에 회전을 추가하고 나중에 두 번째 애니메이션을 시작하기 만하면됩니다. – yinkou