iOS 13 - 推送时的 Buggy 大标题 UINavigationBar
Posted
技术标签:
【中文标题】iOS 13 - 推送时的 Buggy 大标题 UINavigationBar【英文标题】:iOS 13 - Buggy Large Title UINavigationBar while pushing 【发布时间】:2019-10-04 10:10:52 【问题描述】:随着 ios 13 的更新,当我在 UINavigationBar
上有 prefersLargeTitles = true
并执行推送转场时,我仍然无法解决这个恼人的错误。
另外,即使我不能 100% 确定它是否与它相关,我的视图控制器也嵌入了一个集合视图。
无论如何,我所说的错误/故障如下:
基本上,当我推动时,文本不会像我预期的那样动画,它会继续停留在那里,直到出现新屏幕。有小费吗?谢谢
【问题讨论】:
我认为standardAppearance、compactAppearance和scrollEdgeAppearance的新设置会对你有所帮助。 我已经在使用它们了:/ 但也许我错过了一些东西......然后我会深入码头,谢谢提示 遇到同样的问题。后退导航(pop)动画效果很好。 推送的视图控制器是否也显示大标题?您是否将其largeTitleDisplayMode
设置为never
?
是...推送的视图控制器(Detail)没有大标题,即使在DetailViewController中将largeTitleDisplayMode
设置为never
,我也没有得到任何改进
【参考方案1】:
我有同样的问题。尝试将navigationItem.largeTitleDisplayMode
设置为.always
用于您的第一个VC,然后将.never
设置为您的第二个VC 与 prefersLargeTitles = true
在both 情况下。
原因写自Apple Doc:
如果导航栏的prefersLargeTitles属性为false,则该属性无效,导航项的标题始终显示为小标题。
这是导致动画故障的原因,它不仅仅是 iOS13 的错误,在 iOS12/11 上已经是这种情况,只是反过来(从 secondVC 解散回 firstVC 时会发生动画故障)。
我写了一篇文章对此进行了更多解释: https://www.morningswiftui.com/blog/fix-large-title-animation-on-ios13
【讨论】:
【参考方案2】:尝试在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
【讨论】:
以上是关于iOS 13 - 推送时的 Buggy 大标题 UINavigationBar的主要内容,如果未能解决你的问题,请参考以下文章
IOS 7.1 中的 UISegmentedControl Buggy Tint 颜色