2017-02-13 1 views
0

В Xcode 8 с использованием swift 3 У меня есть 2 функции. Когда вызывается функция «HideButton», она выполняет соответствующую анимацию затухания, но когда вызывается функция «ShowButton», исчезновение в анимации не происходит. Что-то не так с функцией анимации «ShowButton» и как я могу ее исправить?Как я могу анимировать кнопку, чтобы исчезнуть, а затем затухать с помощью функции с помощью swift 3

func HideButton() { 

    UIView.animate(withDuration: 0.2, delay: 0, animations: { 
    self.MainButton.alpha = 0 
    }, completion: { finished in 
    self.MainButton.isHidden = true 
    }) 

    Timer.scheduledTimer(timeInterval: 1.2, target: self, selector: #selector(GameViewController.ShowButton), userInfo: nil, repeats: false) 

} 

func ShowButton() { 

    UIView.animate(withDuration: 0.2, delay: 0, animations: { 
    self.MainButton.alpha = 1 
    }, completion: { finished in 
    self.MainButton.isHidden = false 
    }) 

    Timer.scheduledTimer(timeInterval: 1.2, target: self, selector: #selector(GameViewController.HideButton), userInfo: nil, repeats: false) 

} 
+0

Возможный дубликат кнопки [Анимированная кнопка] (http://stackoverflow.com/questions/41466952/animated-display-button) – matt

+0

Удалите все строки, в которых упоминается 'isHidden'. Готово. – matt

ответ

0

Свойство isHidden установлено в true в вашей функции hideButton. Следовательно, это ограничит функциональность кнопки и предотвратит визуальные изменения, которые вы пытаетесь представить в showButton. Поэтому вам нужно будет сделать кнопку не скрытой перед анимацией, а не в обработчике завершения.

Что-то вроде этого:

func hideButton() { 

UIView.animate(withDuration: 0.2, delay: 0, animations: { 
self.MainButton.alpha = 0 
}, completion: { finished in 
self.MainButton.isHidden = true 
}) 

Timer.scheduledTimer(timeInterval: 1.2, target: self, selector: #selector(GameViewController.ShowButton), userInfo: nil, repeats: false) 

} 

func showButton() { 
self.MainButton.isHidden = false 

UIView.animate(withDuration: 0.2, delay: 0, animations: { 
self.MainButton.alpha = 1 
}, completion: { finished in 

}) 

Timer.scheduledTimer(timeInterval: 1.2, target: self, selector: #selector(GameViewController.HideButton), userInfo: nil, repeats: false) 

} 

Поскольку альфа будет равен нулю в начале анимации showButton вы все равно получите желаемый визуальный эффект, несмотря на свойства IsHidden ложна до анимации происходит. Обратите внимание, что я переименовал ваши функции для сохранения соглашения (funcs должен быть строчным)!

+0

Спасибо, это сработало! –

+0

Нет проблем! Ура! –

Смежные вопросы