2016-12-08 7 views
-1

UILabel과 UIImage를 비동기 적으로 페이드하는 반복 애니메이션이 있지만 UIImage가 UILabel보다 오래 나타나게 만드는 방법을 알아낼 수 없습니다. 애니메이션이 레이블과 이미지 사이를 번갈아 가며 이미지가 나타납니다.애니메이션 반복 루프

override func viewDidLoad() { 
    super.viewDidLoad() 

    UIView.animate(withDuration: 5, delay: 2.0, options:[UIViewAnimationOptions.repeat, UIViewAnimationOptions.autoreverse], animations: { 
     self.fadeIn() 
     self.fadeOut() 
    }, completion: nil) 
} 

func fadeIn() { 
    self.label.alpha = 0.0 
    self.image.alpha = 1.0 
} 

func fadeOut() { 
    self.label.alpha = 1.0 
    self.image.alpha = 0.0 
} 
+0

나는 당신이 동시에 둘 다 실행하고있는 것처럼 보입니다. 게다가, 당신은 애니메이션을 반복하지 않습니다. –

답변

1

여러 가지 방법으로 효과를 얻을 수 있습니다.

애니메이션 블록을 만들고 내부에서 페이드 메서드를 호출하는 대신 viewDidLoad에서 각 지연 값이 다른 메서드 내에서 애니메이션 블록을 구분하면됩니다.

ViewDidLoad에서 UIView.animate를 제거하고 단순히 jus를 호출하여 fadeIn() 및 fadeOut()을 호출하고 fade 메소드에서 UIView.animate ...를 추가하고 원하는 기간 및 시간을 설정하십시오. 이렇게하면 애니메이션에 대한 제어력이 훨씬 높아져 원하는 효과를 얻을 때까지 값을 조정할 수 있습니다.

두 번째 옵션은 앞서 언급 한대로 키 프레임 애니메이션을 사용하는 것입니다.

1

를 사용하여 두 개의 키 프레임으로 구성된 7 초 지속 시간 keyframe animation을 반복 :

  • first keyframe 시작 5 초의 지속 시간 및 라벨 2 초 동안 나타납니다 에서 시작하고 총 지속 시간의 5/7 인 지속 시간을 가지며 한 방향으로 사라집니다.

  • second keyframe은 5/7의 시작 시간을 가지며 총 지속 시간의 2/7 인 지속 시간을 가지며 다른 방법으로 사라집니다.