随着 iOS 13 的更新,我遇到了一个恼人的错误,当我在prefersLargeTitles = true
我的电脑上安装UINavigationBar
并执行 push segue 时我仍然无法解决。另外,即使我不能 100% 确定它是否与它相关,我的视图控制器也嵌入了一个集合视图。
无论如何,我正在谈论的错误/故障如下:
基本上,当我推动时,文本不会像我期望的那样动画,并且它会继续留在那里直到出现新屏幕。有小费吗?谢谢
随着 iOS 13 的更新,我遇到了一个恼人的错误,当我在prefersLargeTitles = true
我的电脑上安装UINavigationBar
并执行 push segue 时我仍然无法解决。另外,即使我不能 100% 确定它是否与它相关,我的视图控制器也嵌入了一个集合视图。
无论如何,我正在谈论的错误/故障如下:
基本上,当我推动时,文本不会像我期望的那样动画,并且它会继续留在那里直到出现新屏幕。有小费吗?谢谢
我遇到过同样的问题。尝试为您的第一个 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
尝试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
}