为 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)
}