UIView Hide / Show with animation

Моя простая цель - убрать анимацию скрытия и отображения функций.

Button.hidden = YES;

Достаточно просто. Однако возможно ли, чтобы оно исчезло, а не просто исчезло? Это выглядит довольно непрофессионально.

141
задан IPS Brar 7 April 2017 в 10:29
поделиться

2 ответа

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
})
0
ответ дан 23 November 2019 в 23:06
поделиться

Если Ваше представление будет установлено на скрытый по умолчанию, или Вы изменяете Скрытое состояние, которое я думаю, что Вы должны во многих случаях, то ни один из подходов на этой странице не даст Вам обоим анимацию Постепенного появления/Постепенного исчезновения, это только анимирует одно из этих состояний, причина - Вы, устанавливают Скрытое состояние на ложь прежде, чем звонить метод 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)
    })
}
1
ответ дан 23 November 2019 в 23:06
поделиться