iOS 13 - 推时有 Buggy Large Title UINavigationBar

iOS 13 - Buggy Large Title UINavigationBar while pushing

在 iOS 13 更新后,我遇到了一个烦人的错误,当我在 UINavigationBar 上安装 prefersLargeTitles = true 并且执行时,我仍然无法解决该错误一个推segue。 另外,即使我不是 100% 确定它是否与之相关,我的视图控制器也嵌入了一个集合视图。

无论如何,我要说的bug/glitch如下:

基本上,当我推动时,文本不会像我期望的那样具有动画效果,并且它会继续停留在那里直到出现新屏幕。有小费吗?谢谢

尝试在 viewWillAppear() 方法中设置 largeTitleDisplayMode 参数。

对于基础 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
 }

我遇到了同样的问题。尝试将第一个 VC 的 navigationItem.largeTitleDisplayMode 设置为 .always,然后将第二个 VC [=] 设置为 .never prefersLargeTitles = true 两个 案例中。

原因来自Apple Doc:

If the prefersLargeTitles property of the navigation bar is false, this property has no effect and the navigation item’s title is always displayed as a small title.

这是导致动画故障的原因,它不仅仅是一个 iOS13 错误,在 iOS12/11 上已经是这种情况了,只是反过来(动画故障发生在从第二个VC回到第一个VC).

我写了一篇文章对此进行了更多解释: https://www.morningswiftui.com/blog/fix-large-title-animation-on-ios13