【发布时间】:2019-06-12 10:14:20
【问题描述】:
我正在使用出色的答案 here 来实现文本标签的淡入。
但是,我想引入一个延迟,以便我可以顺序淡入多个文本标签。
到目前为止(取自答案),我正在使用:
extension UIView {
func fadeIn(duration: TimeInterval = 1.0, delay: TimeInterval = 0.0, completion: @escaping ((Bool) -> Void) = {(finished: Bool) -> Void in}) {
UIView.animate(withDuration: duration, delay: delay, options: UIViewAnimationOptions.curveEaseIn, animations: {
self.alpha = 1.0
}, completion: completion) }
}
然后用 :
实现override func viewDidLoad() {
self.line1Outlet.alpha = 0
self.line1Outlet.fadeIn(completion: {
(finished: Bool) -> Void in
})
}
我认为最好的解决方案是将延迟作为扩展中的参数实现,这样我就可以轻松地为每个标签添加不同的延迟。 (例如
override func viewDidLoad() {
self.line1Outlet.alpha = 0
//add a parameter here for the delay (here line 1 gets '1second' then line 2 could come in after 2seconds etc)
self.line1Outlet.delay = 1second
self.line1Outlet.fadeIn(completion: {
(finished: Bool) -> Void in
})
}
我尝试将 self.delay 添加到扩展中(在 self.alpha 下方),但这不起作用,我不确定如何重构该扩展以允许我所追求的。
这个问题的答案将是实现顺序淡入淡出的可重用方法,希望对许多其他人有用!
【问题讨论】: