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 的自定义视图