交替动画循环
Alternating animation loop
我有一个异步淡出 UILabel 和 UIImage 的重复动画,但我不知道如何使 UIImage 出现的时间比 UILabel 长,我希望动画在标签和图像之间交替,以便图像显示持续 5 秒,标签显示持续 2 秒:
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
}
使用持续时间为 7 秒的重复 keyframe animation,由两个关键帧组成:
first keyframe从头开始,持续时间为总持续时间的 5/7,并以一种方式逐渐消失。
second keyframe 从 5/7 开始,持续时间是总持续时间的 2/7,然后向另一方向逐渐消失。
您可以通过多种方式实现您想要的效果。
在 viewDidLoad 中,无需创建动画块并从内部调用淡入淡出方法,只需在每个具有不同延迟值的方法中使用单独的动画块即可。
所以从 ViewDidLoad 中删除 UIView.animate 并简单地调用 fadeIn() 和 fadeOut(),然后在你的淡入淡出方法中添加 UIView.animate... 并设置你想要的持续时间和时间。这样你就可以更好地控制你的动画,你可以调整值直到你达到你想要的效果。
第二个选项将如前所述使用关键帧动画。
我有一个异步淡出 UILabel 和 UIImage 的重复动画,但我不知道如何使 UIImage 出现的时间比 UILabel 长,我希望动画在标签和图像之间交替,以便图像显示持续 5 秒,标签显示持续 2 秒:
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
}
使用持续时间为 7 秒的重复 keyframe animation,由两个关键帧组成:
first keyframe从头开始,持续时间为总持续时间的 5/7,并以一种方式逐渐消失。
second keyframe 从 5/7 开始,持续时间是总持续时间的 2/7,然后向另一方向逐渐消失。
您可以通过多种方式实现您想要的效果。
在 viewDidLoad 中,无需创建动画块并从内部调用淡入淡出方法,只需在每个具有不同延迟值的方法中使用单独的动画块即可。
所以从 ViewDidLoad 中删除 UIView.animate 并简单地调用 fadeIn() 和 fadeOut(),然后在你的淡入淡出方法中添加 UIView.animate... 并设置你想要的持续时间和时间。这样你就可以更好地控制你的动画,你可以调整值直到你达到你想要的效果。
第二个选项将如前所述使用关键帧动画。