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
属性。因为UINavigationController
是UIViewController
的子类,所以它也有一个。但是,导航堆栈中视图控制器的导航项会覆盖 UINavigationController
本身的导航项(此行为允许您为堆栈中的每个 VC 分配不同的导航项标题)。以上是关于UINavigationBar 大标题在执行 segues 时不调整大小的主要内容,如果未能解决你的问题,请参考以下文章
UINavigationBar 在解除 UISearchController 时覆盖 UITableView
iOS 11 - 在 UINavigationBar 上显示大标题而不使用 UINavigationController