【问题标题】:Repeating alpha animation in Swift在 Swift 中重复 alpha 动画
【发布时间】:2021-04-06 21:27:59
【问题描述】:

我正在尝试使用 Swift 在 iOS 上的 UITableViewCell 中为视图实现类似脉冲的效果。要求是从 alpha 1.0 到 0.5 再回到 1.0 的 2 秒动画。并无限重复。

我尝试了几种方法,但动画永远不会开始或重复。

view 是一个简单的 UIView 出口:

@IBOutlet private weak var view: UIView!

尝试过的变体:

UIView.animateKeyframes(withDuration: 2.0, delay: 0, options: [], animations: {
    UIView.addKeyframe(withRelativeStartTime: 0, relativeDuration: 0.5, animations: {
        view.alpha = 0.0
    })
    UIView.addKeyframe(withRelativeStartTime: 0.5, relativeDuration: 0.5, animations: {
        view.alpha = 1.0
    })
}, completion: nil)
let animationDuration = 1.0
UIView.animate(withDuration: animationDuration,
               delay: 0,
               options: [.repeat, .autoreverse],
               animations: {
                   view.alpha = 0.5
               },
               completion: nil)

如果有意义的话,这两种方法都是在 awakeFromNib() 中触发的。

【问题讨论】:

  • 信息不足。代码就目前而言还可以,但当然一切都取决于view 是什么,这段代码何时运行等等。awakeFromNib 作为开始这个的时间是没有意义的; view 需要在界面中才能发生任何事情。
  • view 只是 UITableViewCell 中的一个 UIView 出口。为问题添加了更多信息。如果不是 awakeFromNib,动画应该从哪里开始?

标签: ios swift animation


【解决方案1】:

prepareForReuse() 中而不是awakeFromNib() 中触发动画会很神奇。正如@matt 在他的评论中提到的那样,在 awakeFromNib() 的层次结构中不存在视图,这看起来是动画开始所必需的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-06
    • 2014-01-04
    相关资源
    最近更新 更多