2013-06-11 2 views
1

여러 애니메이션을 함께 연결하고 연속 애니메이션 간 일시 중지를 제거하는 데 문제가 있습니다. 먼저 완성 블록에 UIView 애니메이션을 중첩시켜 보았습니다. 그 이후로, 나는이 솔루션으로 이동했습니다UIView 애니메이션 간 일시 중지 제거

http://xibxor.com/objective-c/uiview-animation-without-nested-hell/

나는 더 읽을 생각,하지만 난 같은 일시 정지 문제가 있습니다.

답변

1

문제는 아마도 애니메이션 타이밍 일 뿐이며 일시 중지되지 않습니다. 기본적으로 애니메이션은 쉽게 사용하고 타이밍을 쉽게 만듭니다. 즉, 각 애니메이션은 0에서 시작하여 최고 속도로 가속 한 다음 정지하기 위해 느려집니다. 그런 다음 다음 애니메이션도 똑같은 작업을 수행합니다.

일련의 애니메이션을 연결하여 연속 효과를 만들려면 선형 애니메이션 타이밍을 사용하는 것이 좋습니다. UIView 클래스 메서드 animateWithDuration : delay : options : animation : completion :

options 매개 변수에 대해 UIViewAnimationOptionCurveLinear를 전달하십시오.

+0

옵션을 UIViewAnimationOptionCurveLinear로 설정하면 애니메이션이 향상되었지만 애니메이션 사이에는 약간의 일시 중지가 있습니다. 애니메이션은 하나의 애니메이션 블록에서 실행되지 않기 때문에 생각 합니다만 확실하지 않습니다. – JeffRegan

1

이것은 대단히 가볍기 때문에 객관적인 C로 변환하기에는 너무 가볍습니다. 애니메이션 트랜잭션 블록에서 애니메이션을 함께 연결하십시오.

UIView.animateKeyframesWithDuration(totalAnimationDuration, delay: 0, options:UIViewKeyframeAnimationOptions.CalculationModeLinear, animations: { 

      for (var i = 0; i < wayPoints.count; i++) { 
       let nextWayPoint = wayPoints[i] 

       UIView.addKeyframeWithRelativeStartTime(CGFloat(i) * relativeDuration, relativeDuration: relativeDuration, animations: { 
        token.frame = CGRect(x: nextWayPoint.x + self.inset, y: nextWayPoint.y + self.inset, width: token.frame.size.width, height: token.frame.size.height) 
        }) 


      } 


      }, completion: { success in 


      }) 
+0

이것은 내 질문에 대한 대답이 아니며 질문에서 묻고있는 언어도 아닙니다. – JeffRegan

+0

공정하게하기 위해 객관적인 -c를 지정하지 않았고 질문에 답합니다. –

+0

@JeffCompton, 위와 완전히 동일한 API 호출을 사용하여 Obj-C로 변환됩니다. 그는 keyframeanimation과 같은 것을 사용하여 하나의 파울 홱 잡아 당김으로 애니메이션을 연결해야한다고 말한 것은 맞습니다. 위에서 볼 수 있듯이 그는 동적으로 애니메이션을 생성하고 즉시 추가합니다. 이렇게하면 애니메이션이 단일 키 프레임 애니메이션으로 연결됩니다. 이렇게하면 CATransation에서 완료 콜백이 완료되기를 기다리는 데 지연이 생기므로 지연을 방지 할 수 있습니다. – TheCodingArt

관련 문제