2017-05-31 39 views
2

我在我的应用程序中有两个页面:一个嵌入在UINavigationController中,一个不是。不在UINavigationController中的页面有一个UINavigationBar,我将其拖入并将其提示设置为空字符串以增加其高度。但是,这会导致它比嵌入在UINavigationController中的页面稍高。这是一个被侧面图片侧面:等高导航条

pic

如果我设置一个提示页面左侧的导航栏上它的高度变得太高。当我去到故事板检查我看应该是高度为74:

pic2

有谁知道如何人为地使棒嵌入UINavigationController相同的高度的一个,这不是在页面上?

回答

1

我能回答我自己的问题。

我只是编程方式更改高度定制UINavigationController子类中:

override func viewDidAppear(_ animated: Bool) { 
    let bounds = self.navigationBar.bounds 
    self.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: 74) 

} 
0

虽然你已经回答了你的问题,AFAIU的高度差是具有在一种情况下提示而不是其他的结果。那么,什么是错误使用内UINavigationController添加一个空字符串prompt的视图控制器UINavigationItem如:

self.navigationItem.prompt = ""; 

如果您有UINavigationController内许多视图控制器,不希望在每个明确设置提示,你可以使用UINavigationControllerDelegatewillShowdidShow事件将其设置在一个地方为所有子控制器。

这应该比你的方法更可靠,因为所有设备和所有设备方向上的导航栏高度并不相同(AFAIR iPad纵向和横向不同),而且Apple可以在iOS版本之间进行更改。

+0

这将导致NavigationController内的NavigationBar比NavigationController中的NavigationBar略高。 (低10分)。这是围绕前一个更短的另一种方式现在成为一个新的更高。 – Wismin

6

这种情况对于手动添加UINavigationBar(即不通过嵌入在UINavigationController之内)的其他人来说很常见。

UINavigationBar通用将具有44点

的问题是,20点间隙的manually added UINavigationBar以上的高度。

在嵌入式版本的情况下,间隙(假设它存在)具有与UINavigationBar相同的背景色。当你添加提示时,它增加了30个向上扩展的点。所以,而不是20 + 44 = 64分,现在你有74分。而embedded UINavigationBar有64点。因此相差10分。出于同样的原因,在embedded UINavigationBar上添加“”(space)将导致高度高于74 points

我认为你最好的选择是将其他ViewController嵌入new UINavigationController。 iOS足够聪明,可以把它看作只有一个NavigationController而不是两个。用户不会遇到任何差异。至于程序员,如果您需要以编程方式查找second ViewController,则需要考虑extra UINavigationController

1

试图把限制在UINavigationBar的身高等于64 storyboard capture

1

Navigartionbar有44相同的大小不变要么你把它嵌入或使用自定义导航。请检查下面的图片。

在第一和第二这里我已经嵌入式导航是定制一个具有。没有高度问题。