如何关闭UINavigationBar的大型游戏?

我在UINavigationController中嵌入了UITableView和Detail View,如下所示: 在此处输入图像描述 我想为“我的笔记”打开大型标题,但我想将其关闭以获取详细视图。 类似于默认的Mail应用程序在iPhone上的工作方式。 如何在segue期间更改导航栏的prefersLargeTitle属性?

以下两者中的任何一个都将解决您的问题:

  1. 为您的navigationBar设置prefersLargeTitles为false

     self.navigationController?.navigationBar.prefersLargeTitles = false 
  2. 将largeTitleDisplayMode设置为never for navigationItem(注意:prefersLargeTitles必须为false,否则这将不起作用)

     self.navigationController?.navigationItem.largeTitleDisplayMode = .never 

注意 :如果prefersLargeTitles为true,那么largeTitleDisplayMode = .never将不起作用。 导航栏的小标题显示取决于prefersLargeTitles

如果值为true,这将启用大标题模式

 self.navigationController?.navigationBar.prefersLargeTitles = true 

我刚才有同样的问题。

我的用例:

MasterVC:没有largeTitle的基本导航栏

DetailVC:启用了largeTitle

– >当从DetailVC回到MasterVC时,我看到一个奇怪的动画,在回到基本的非largeTitle布局之前,在Master上显示了一个大标题。 这看起来像一个小故障。

我按照这种方法修复了它:

在MasterVC中viewDidLoad

 if #available(iOS 11.0, *) { navigationItem.largeTitleDisplayMode = .never navigationController?.navigationBar.prefersLargeTitles = false } 

在DetailVC中viewDidLoad

 if #available(iOS 11.0, *) { navigationItem.largeTitleDisplayMode = .always navigationController?.navigationBar.prefersLargeTitles = true } 

我希望能帮到别人。

  if #available(iOS 11.0, *) { self.navigationItem.largeTitleDisplayMode = UINavigationItem.LargeTitleDisplayMode.never } else { // Fallback on earlier versions }