为 StackView 中的每个 UIView 设置动画
Animation each UIView inside the StackView
我需要像这样为 stackView 中的 UIView 设置动画。
这张图片是 gif(点击显示)
我像这样创建一个 UIView 扩展
func fadeIn(duration: TimeInterval = 1.5, delay: TimeInterval = 0.0, completion: @escaping ((Bool) -> Void) = {(_: Bool) -> Void in }) {
self.alpha = 0.0
UIView.animate(withDuration: duration, delay: delay, options: UIView.AnimationOptions.curveEaseIn, animations: {
self.isHidden = false
self.alpha = 1.0
}, completion: completion)
}
并且为 StackView 中的每个 UIView 分配这样的动画
stackView.subviews.forEach { currentView in
currentView.fadeIn()
}
但所有视图同时出现。我尝试添加延迟时间但无法正常工作。知道如何解决吗?
你可以试试
stackView.arrangedSubviews.enumerated().forEach { (index,item) in
item.fadeIn(delay:Double(index)*1.5)
}
和
func fadeIn(duration: TimeInterval = 1.5, delay: TimeInterval = 0.0, completion: @escaping ((Bool) -> Void) = {(_: Bool) -> Void in }) {
self.alpha = 0.0
UIView.animate(withDuration: duration, delay: delay, options: UIView.AnimationOptions.curveEaseIn, animations: {
self.isHidden = false
self.alpha = 1.0
}, completion: completion)
}
我需要像这样为 stackView 中的 UIView 设置动画。
这张图片是 gif(点击显示)
我像这样创建一个 UIView 扩展
func fadeIn(duration: TimeInterval = 1.5, delay: TimeInterval = 0.0, completion: @escaping ((Bool) -> Void) = {(_: Bool) -> Void in }) {
self.alpha = 0.0
UIView.animate(withDuration: duration, delay: delay, options: UIView.AnimationOptions.curveEaseIn, animations: {
self.isHidden = false
self.alpha = 1.0
}, completion: completion)
}
并且为 StackView 中的每个 UIView 分配这样的动画
stackView.subviews.forEach { currentView in
currentView.fadeIn()
}
但所有视图同时出现。我尝试添加延迟时间但无法正常工作。知道如何解决吗?
你可以试试
stackView.arrangedSubviews.enumerated().forEach { (index,item) in
item.fadeIn(delay:Double(index)*1.5)
}
和
func fadeIn(duration: TimeInterval = 1.5, delay: TimeInterval = 0.0, completion: @escaping ((Bool) -> Void) = {(_: Bool) -> Void in }) {
self.alpha = 0.0
UIView.animate(withDuration: duration, delay: delay, options: UIView.AnimationOptions.curveEaseIn, animations: {
self.isHidden = false
self.alpha = 1.0
}, completion: completion)
}