Как убрать метку titleView на iOS 12

Я пытаюсь скрыть UILabel, который был добавлен как titleView элемента навигации UIViewController. В iOS 11 и более ранних версиях следующий код правильно закрывает метку. При запуске на iOS 12 анимация появления работает, но анимация затухания не анимируется — вид сразу исчезает.

let fadeTextAnimation = CATransition()
fadeTextAnimation.type = .fade
fadeTextAnimation.duration = 0.5

navigationItem.titleView!.layer.add(fadeTextAnimation, forKey: nil)
(navigationItem.titleView as! UILabel).isHidden = didShowNavigationItemTitle

Я также пытался изменить код для использования UIView.transition, но наблюдается такое же поведение.

UIView.transition(with: navigationItem.titleView!,
    duration: 0.5,
    options: .transitionCrossDissolve,
    animations: {
        (self.navigationItem.titleView as! UILabel).isHidden = self.didShowNavigationItemTitle
    }, completion: nil)

Как можно добиться этого затухания в iOS 12?


person Andrew Bennet    schedule 16.09.2018    source источник
comment
Пробовали ли вы другие типы/подтипы анимации? У них похожие проблемы?   -  person Ashley Mills    schedule 16.09.2018
comment
Теперь я попробовал несколько других типов анимации: кажется, они правильно анимируются...   -  person Andrew Bennet    schedule 16.09.2018


Ответы (1)


Просто используйте блок UIView.animate и анимируйте альфа-канал заголовка.

UIView.animate(withDuration: 0.5, delay: 0, options: .transitionCrossDissolve, animations: {
    self.navigationItem.titleView?.alpha = 0
})
person Tamás Sengel    schedule 16.09.2018
comment
Это действительно правильно анимирует, но я столкнулся с некоторыми другими трудностями при использовании свойства alpha, а не isHidden. Я хочу открыть представление со скрытой меткой, но по какой-то причине установка titleView элемента навигации на alpha из 0 в течение viewDidLoad или viewWillAppear не вступает в силу (или, скорее, кажется, что что-то вскоре делает titleView элемента навигации непрозрачным после загрузки представления) - person Andrew Bennet; 16.09.2018
comment
Это, я полагаю, ответ на этот вопрос; возможно, я подниму другие вопросы как еще один вопрос - person Andrew Bennet; 16.09.2018