12

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

无论如何,我正在谈论的错误/故障如下:

在此处输入图像描述

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

4

2 回答 2

26

我遇到过同样的问题。尝试为您的第一个 VC 设置navigationItem.largeTitleDisplayMode.always,然后在这两种.never情况下为您的第二个 VC设置prefersLargeTitles = true

原因来自Apple Doc:

如果导航栏的prefersLargeTitles 属性为false,则该属性无效,导航项的标题始终显示为小标题。

这导致了动画故障,而且它不仅仅是 iOS13 的错误,在 iOS12/11 上已经是这种情况,只是相反(从 secondVC 解散回 firstVC 时会发生动画故障)。

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

于 2019-10-14T08:32:44.407 回答
1

尝试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
 }
于 2019-10-10T15:26:13.137 回答