我有一个重复动画,它以异步方式淡化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
}
答案 0 :(得分:1)
使用持续时间为7秒的重复wrap it to use in python,包含两个关键帧:
keyframe animation从一开始就开始,持续时间为总持续时间的5/7,并以一种方式淡出。
first keyframe从5/7开始,持续时间为总持续时间的2/7,并以另一种方式淡出。
答案 1 :(得分:1)
你可以通过多种方式达到效果。
在viewDidLoad中,而不是创建一个动画块并从内部调用你的淡入淡出方法,只需在每个方法中使用不同延迟值的单独动画块。
因此从ViewDidLoad中删除UIView.animate,只需调用fadeIn()和fadeOut(),然后在你的fade方法中添加UIView.animate ....并设置你想要的持续时间和时间。通过这种方式,您可以更好地控制动画,并且可以调整值,直到达到所需的效果。
第二个选项如前所述使用关键帧动画。