2014-11-17 5 views
0

에 일련의 애니메이션을 만들고 싶습니다. 예를 이초 이초 iOS stack 시리즈의 애니메이션

이를 달성하는 가장 좋은 방법은 무엇입니까

에 대한

  • 페이드를위한

  • 회전 이초

    위한에서

    • 페이드를 들어 ? CAAnimation 그룹을 사용하려고 시도했지만 애니메이션 배열을 병렬로 애니메이션하는 것으로 보입니다. 애니메이션 1을하고 애니메이션 2를 실행 한 다음 애니메이션 3을 수행합니다. (시리즈)

  • +0

    이전이 종료해야 할 때까지 애니메이션 그룹하지만 치명적인 각각의 애니메이션을 사용합니다. – rckoenes

    답변

    2

    이와 같은 모든 애니메이션에는 블록 기반 애니메이션을 사용해야합니다. animateKeyFrames 블록이 완벽 할 것 같은 애니메이션에 대한

    ...

    // set duration for the entire sequence of animations 
    [UIView animateKeyFramesWithDuration:6 
               delay:0 
              options:0 
              animations:^{ 
               // add fade in keyframe 
               // starts at 0% lasts for 33% of animation 
               [UIView addKeyFrameWithRelativeStartTime:0 
                     relativeDuration:0.333 
                      animations:^{ 
                       view.alpha = 1.0; 
                      }]; 
               // add rotation key frame 
               // starts at 33% lasts for 33% of animation 
               [UIView addKeyFrameWithRelativeStartTime:0.333 
                     relativeDuration:0.333 
                      animations:^{ 
                       view.transform = CGAffineTransformMakeRotation(rotationAngle); 
                      }]; 
               // add fade out key frame 
               // starts at 66% lasts for 33% of animation 
               [UIView addKeyFrameWithRelativeStartTime:0.666 
                     relativeDuration:0.333 
                      animations:^{ 
                       view.alpha = 0.0; 
                      }]; 
              } 
              completion:nil]; 
    
    +0

    @Rob! 끝났어, 고마워. – Fogmeister

    +0

    페이드 인 및 페이드 아웃이 잘 작동합니다. 회전이 발생하지 않습니다. 360도에 대해 회전 각도를 라디안 6.28로 지정합니다 - 제안 사항. – OneGuyInDc

    +0

    아, 먼저 pi에'M_PI'를 사용하고 2에 2를 곱해야합니다. 6.28. 둘째, 2π 라디안은 0과 같기 때문에 회전하지 않습니다. 회전을 두 개로 나눕니다. 한 번 M_PI로 회전하고 다른 회전을 2 * M_PI로 지정하면 타이밍을 업데이트해야합니다. – Fogmeister

    3

    요즘 일반적으로 animateKeyframesWithDuration을 통해 UIView 블록 애니메이션을 사용합니다. 애니메이션 기간을 6 초로 지정한 다음 에 3 회의 호출을 추가합니다. 상대 시작 시간은 0, 0.333 및 0.666으로 시작 시간은 각각 0.333이며 3 개의 애니메이션 블록에서 적절한 애니메이션을 수행합니다.