iOS 13-推送时,Buggy大标题UINavigationBar

时间:2019-10-04 10:10:52

标签: ios uicollectionview uinavigationbar ios13 preferslargetitles

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

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

enter image description here

基本上,该文本没有像我推动时所期望的那样动画,并且一直停留在那里直到出现新屏幕。有小费吗?谢谢

3 个答案:

答案 0 :(得分:8)

我有同样的问题。尝试将第一个VC的navigationItem.largeTitleDisplayMode设置为.always,然后将第二个VC的.never设置为,同时 prefersLargeTitles = true都 >案件。

原因是从Apple Doc撰写的:

  

如果导航栏的preferredsLargeTitles属性为false,则此属性无效,并且导航项的标题始终显示为小标题。

这是造成动画故障的原因,而不仅仅是iOS13的错误,在iOS12 / 11上已经存在相反的情况(从第二个VC退回到第一个VC时发生动画故障)。< / p>

我写了一篇文章,解释了更多有关此的内容: https://www.morningswiftui.com/blog/fix-large-title-animation-on-ios13

答案 1 :(得分:0)

尝试在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
 }

答案 2 :(得分:-1)

到目前为止,建议的解决方案对我不起作用。因此,我最终使用了以下解决方法。

  1. 将当前视图控制器的title属性设置为所需的viewWillAppear标题。例如:
override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    title = "Random title"
}
  1. 然后,在viewWillDisappear中将title属性设置为nil。例如:
override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    title = nil
}