Моя простая цель - убрать анимацию скрытия и отображения функций.
Button.hidden = YES;
Достаточно просто. Однако возможно ли, чтобы оно исчезло, а не просто исчезло? Это выглядит довольно непрофессионально.
isHidden
непосредственное значение, и Вы не можете влиять на анимацию на нем, вместо этого можно использовать Alpha для, скрывают представление
UIView.transition(with: view, duration: 0.5, options: .transitionCrossDissolve, animations: {
view.alpha = 0
})
И для показа:
UIView.transition(with: view, duration: 0.5, options: .transitionCrossDissolve, animations: {
view.alpha = 1
})
Если Ваше представление будет установлено на скрытый по умолчанию, или Вы изменяете Скрытое состояние, которое я думаю, что Вы должны во многих случаях, то ни один из подходов на этой странице не даст Вам обоим анимацию Постепенного появления/Постепенного исчезновения, это только анимирует одно из этих состояний, причина - Вы, устанавливают Скрытое состояние на ложь прежде, чем звонить метод UIView.animate , который вызовет внезапную видимость и если Вы только анимируете альфу тогда, объектное пространство все еще там, но это не видимо, который закончится к некоторым проблемам UI.
, Таким образом, лучший подход должен проверить сначала, скрыто ли представление, тогда устанавливает альфу на 0,0, как это, когда Вы установите Скрытое состояние на ложь, Вы не будете видеть внезапной видимости.
func hideViewWithFade(_ view: UIView) {
if view.isHidden {
view.alpha = 0.0
}
view.isHidden = false
UIView.animate(withDuration: 0.3, delay: 0.0, options: .transitionCrossDissolve, animations: {
view.alpha = view.alpha == 1.0 ? 0.0 : 1.0
}, completion: { _ in
view.isHidden = !Bool(truncating: view.alpha as NSNumber)
})
}