iOS 13 - багги большого заголовка UINavigationBar при нажатии - PullRequest
4 голосов
/ 04 октября 2019

С обновлением iOS 13 у меня появилась досадная ошибка, которую я до сих пор не смог устранить, когда у меня prefersLargeTitles = true на моем UINavigationBar, и я выполняю push-переход. Кроме того, даже если я не уверен на 100%, связано ли это с моим контроллером представлений, он имеет встроенное представление коллекции.

В любом случае, я говорю об ошибке / сбое:

enter image description here

В основном текст не анимируется, как я ожидал, когда я нажимаю, и продолжает оставаться там, пока не появится новый экран. Какие-нибудь советы? Спасибо

Ответы [ 2 ]

7 голосов
/ 14 октября 2019

У меня была такая же проблема. Попробуйте установить navigationItem.largeTitleDisplayMode на .always для первого VC, а затем .never для второго VC с prefersLargeTitles = true в в обоих случаях.

Причина написана в Apple Doc:

Если свойство prefersLargeTitles панели навигации имеет значение false, это свойство не действует, и заголовок элемента навигации всегда отображается как маленькийtitle.

Что вызывает глюк анимации, и это не только ошибка iOS13, на iOS12 / 11 это уже тот случай, когда наоборот (глюк анимации происходит при удалении изsecondVC обратно к firstVC).

Я написал статью, которая объясняет немного больше об этом: https://www.morningswiftui.com/blog/fix-large-title-animation-on-ios13

0 голосов
/ 10 октября 2019

Попробуйте установить largeTitleDisplayMode параметр в методе viewWillAppear().

для базового VC установите его на .always, а в целевом VC установите на .never

BASE VC

override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationItem.largeTitleDisplayMode = .always
}


DESTINATION VC

 override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        navigationItem.largeTitleDisplayMode = .never
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...