Как предотвратить вызов UIView.animateIOS

Программируем под IOS
Ответить
Anonymous
 Как предотвратить вызов UIView.animate

Сообщение Anonymous »

Я хотел бы воспроизвести поведение кнопок WhatsApp в режиме просмотра текущего вызова: они исчезают через несколько секунд после появления, и каждый раз, когда пользователь касается экрана, они появляются снова.

Предположим, у меня есть эти две кнопки,

Код: Выделить всё

@IBOutlet weak var callButton: UIButton!
@IBOutlet weak var muteButton: UIButton!
Этот фрагмент вызывается при вводе viewDidAppear, а также когда пользователь касается экрана:

Код: Выделить всё

self.callButton.alpha = 1.0
self.muteButton.alpha = 1.0
delay(4.0) {
UIView.animate(withDuration: 1.0, animations: {
self.callButton.alpha = 0.0
self.muteButton.alpha = 0.0
}, completion: { _ in })
}

func delay(_ seconds: Double, completion: @escaping () -> ()) {
let popTime = DispatchTime.now() + Double(Int64(Double(NSEC_PER_SEC) * seconds)) / Double(NSEC_PER_SEC)
DispatchQueue.main.asyncAfter(deadline: popTime) {
completion()
}
}
С помощью этого кода, если пользователь коснется экрана примерно через 3 секунды после предыдущего вызова, кнопки все равно исчезнут через 1 секунду. Поэтому я хотел бы знать, как я могу заблокировать предыдущий UIView.animate, если в это время снова коснуться представления.

Спасибо за вашу помощь

Подробнее здесь: https://stackoverflow.com/questions/527 ... ing-called
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»