在 Swift 中重复 alpha 动画
Posted
技术标签:
【中文标题】在 Swift 中重复 alpha 动画【英文标题】:Repeating alpha animation in Swift 【发布时间】: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,动画应该从哪里开始?
【参考方案1】:
在prepareForReuse()
中而不是awakeFromNib()
中触发动画会很神奇。正如@matt 在他的评论中提到的那样,在 awakeFromNib() 的层次结构中不存在视图,这看起来是动画开始所必需的。
【讨论】:
以上是关于在 Swift 中重复 alpha 动画的主要内容,如果未能解决你的问题,请参考以下文章
Swift:链式 UIView 动画永远重复? Obj-C 代码不可移植