Фон
Благодаря отличному ответу здесь , мне удалось сделать серию этикеток постепенно исчезающими.
Однако задержка, упомянутая в функции в расширении, срабатывает только после завершения предыдущего затухания (я думаю), поэтому между ними остается не менее 1 секунды.В идеале я хочу отредактировать модель так, чтобы задержка относилась ко времени загрузки представления, а не ко времени завершения предыдущего.
т.е. если я сделаю задержку довольно маленькой, вторая начнет исчезать до того, как закончится первая.
Это расширение:
extension UIView {
func fadeIn(duration: TimeInterval = 1.0, delay: TimeInterval = 0.0, completion: ((Bool)->())? = nil) {
self.alpha = 0.0
UIView.animate(withDuration: duration, delay: delay, options: .curveEaseIn, animations: {
self.alpha = 1.0
}, completion: completion)
}
}
иэто моя реализация на VC с 6 метками:
func animateLabels() {
self.titleOutlet.alpha = 0.0
self.line1Outlet.alpha = 0.0
self.line2Outlet.alpha = 0.0
self.line3Outlet.alpha = 0.0
self.line4Outlet.alpha = 0.0
self.line5Outlet.alpha = 0.0
self.line6Outlet.alpha = 0.0
self.titleOutlet.fadeIn(delay: 0.2, completion: { _ in
self.line1Outlet.fadeIn(delay: 0.4, completion: { _ in
self.line2Outlet.fadeIn(delay: 0.6, completion: { _ in
self.line3Outlet.fadeIn(delay: 0.8, completion: { _ in
self.line4Outlet.fadeIn(delay: 1.0, completion: { _ in
self.line5Outlet.fadeIn(delay: 1.2, completion: { _ in
self.line6Outlet.fadeIn(delay: 1.4, completion: { _ in
})})})})})})})
}
К чему я пытаюсь добраться?
Так что я пытаюсь добраться долиния line2outlet начинает исчезать через 0,4 секунды после загрузки страницы, но начинается только после того, как строка line1 закончила исчезать (это занимает 1 секунду и задерживается на 0,2 с).
Что я пробовал?
Я попытался написать свою собственную функцию задержки после чтения.Я попытался добавить это к расширению:
func delay(interval: TimeInterval, closure: @escaping () -> Void) {
DispatchQueue.main.asyncAfter(deadline: .now() + interval) {
closure()
}
}
и реализовать так:
self.line1Outlet.fadeIn(delay: 0, completion: { _ in
delay(interval: 1, closure: ()->Void)
, но получило множество ошибок!Я также попытался установить минус числа для задержек, но это тоже не сработало.
Любая помощь очень ценится!