UI NavBar高度的自定义(不同视图需要不同高度的nav bar)

Posted

技术标签:

【中文标题】UI NavBar高度的自定义(不同视图需要不同高度的nav bar)【英文标题】:Customisation of UINavBar height (different views require nav bars with different heights) 【发布时间】:2016-10-28 10:26:41 【问题描述】:

我需要实现具有 2 个不同高度的 UINavigationBar。 例如:我有两种导航栏 1. 正常高度 2. 自定义高度(增加了导航栏的高度)。我正在使用 Swift 2.3 我的应用程序支持 ios8.0 >

我的解决方法:我将 UINavigationBar 子类化为自定义高度,并将该类分配给导航控制器中的 NavigationBar。现在我看到我所有的视图高度都变成了自定义高度。但是对于少数视图,我希望保持导航栏的正常高度(44)。 我尝试将导航栏框架设置回 44(在需要正常高度的视图中)。在这里,每当我的应用程序进入后台状态并且激活 NavigationBar 设置回自定义高度时,我都会遇到问题。 我想要一个解决方案,用一个 UINavigationController 处理不同高度的 UINavigationBar。

附上截图:

查看 1:

视图 2:

视图 2:(应用激活后)

从上面的截图来看,I Base view 是应用启动时的落地视图,这里的 NavigationBar 是自定义的。 1. View 1是从BaseView推过来的,这里NavigationBar是自定义栏(我要自定义栏在这个视图,这个视图没有问题) 2. 视图 2 是从 BaseView 推送的,此处 NavigationBar 是自定义栏,但我仍然想要此视图中栏的默认高度 (44),因此在 viewWillAppear 中我将导航栏框架设置为 44。并且设置正确 但是每当应用程序从后台激活时,它都会重置回自定义高度(您可以在最后一个屏幕截图中看到)

我想要一个解决方案,我可以使用增加高度和默认高度的自定义栏,并根据视图适当地使用它们。

【问题讨论】:

请上传一些关于这个问题的屏幕,以便我们更好地理解...... @MohitDodiya 感谢您的及时回复,我附上了几张截图,请您检查一下。 你在哪个设备上运行这个应用??? @MohitDodiya 我从模拟器中截取了这些屏幕截图,但是当我在物理设备 (iPhone 6S) 上运行应用程序时看到相同的行为 @Gupta 嗨,您不应该创建navbar 的子类。见this。这是apple 自定义navbar 的常用方法。 【参考方案1】:

首先在选择该视图后设置自定义 NavigationBar 并像这样设置其自动调整大小..

并在 viewWillAppeare 方法中隐藏导航栏。

override func viewWillAppear(animated: Bool)
 
        self.navigationController?.navigationBarHidden = true
 

【讨论】:

您能否详细解释一下如何将自动调整大小设置为 UINavigationBar。我无法设置您建议的方式。 抱歉,gupta 回复晚了。首先,在 xcode 中的“显示尺寸检查器”左侧抽屉中选择自定义视图。像我上传第一张图片一样设置自动调整大小。

以上是关于UI NavBar高度的自定义(不同视图需要不同高度的nav bar)的主要内容,如果未能解决你的问题,请参考以下文章

如何在绘制之前获取调整大小的自定义视图的宽度和高度

在具有动态高度的 IB uitableviewcell 中使用带有 XIB 的自定义视图

自定义 Segue NavBar 后退按钮

如何在表格视图中加载不同的自定义单元格

UITableviewCell 中的 UIStackview 按比例填充需要不正确的帧

颤振中的自定义高度网格视图