UINavigationBar 大标题在执行 segues 时不调整大小

Posted

技术标签:

【中文标题】UINavigationBar 大标题在执行 segues 时不调整大小【英文标题】:UINavigationBar large title not resizing when performing segues 【发布时间】:2018-10-10 22:29:50 【问题描述】:

我在我的主要UIViewController 中使用了这个代码来获得一个大标题:

navigationController?.navigationBar.prefersLargeTitles = true

但我不希望在每个视图中都发生这种情况,实际上我只希望在我的主视图中出现那个大标题。

所以,在网上阅读时,我发现要实现这一点,我需要在我不想要那个大标题的视图中添加这个:

navigationController?.navigationItem.largeTitleDisplayMode = .never

但这并没有真正按预期工作。

我得到的结果是,当我执行 segue 时,标题消失了,但导航控制器保持相同的大小,就好像它里面有一个大标题一样。

我的实现可能有什么问题?

ios 12.1 Beta 3 Xcode 10.1 Beta 2

【问题讨论】:

【参考方案1】:

您应该将 视图控制器navigationItem 改为 largeTitleDisplayMode.never

navigationItem.largeTitleDisplayMode = .never

或者,如果您正在使用情节提要,您可以在导航项的属性检查器中将 大标题 选项设置为 从不

【讨论】:

也试过了,没有成功。 func setupNavigationTitle() navigationItem.title = "Counters"; navigationController?.navigationBar.prefersLargeTitles = true; navigationController?.navigationItem.largeTitleDisplayMode = .never; @matt.logic 请在问题中显示您的确切设置。另外,尝试使用上面提到的代码创建一个视图控制器设置,看看问题是否仍然存在。 好吧,我看错了,这解决了问题!非常感谢!如果我可以问,navigationController.navigationItem 和简单的navigationItem 有什么区别? @matt.logic 将navigationController?.navigationItem.largeTitleDisplayMode = .never 替换为navigationItem.largeTitleDisplayMode = .never,如答案中所述。 @matt.logic 欢迎您!每个UIViewController 实例都有一个navigationItem 属性。因为UINavigationControllerUIViewController 的子类,所以它也有一个。但是,导航堆栈中视图控制器的导航项会覆盖 UINavigationController 本身的导航项(此行为允许您为堆栈中的每个 VC 分配不同的导航项标题)。

以上是关于UINavigationBar 大标题在执行 segues 时不调整大小的主要内容,如果未能解决你的问题,请参考以下文章

UINavigationBar 在解除 UISearchController 时覆盖 UITableView

UINavigationBar 大标题重影

带有大标题的 UINavigationBar 没有背景图片

iOS 11 - 在 UINavigationBar 上显示大标题而不使用 UINavigationController

iOS 11:大标题的 UINavigationBar 高度(模仿 Apple Music 应用)

iOS 11 中 UINavigationBar 大标题的默认字体?