Ios 等高导航栏
我的应用程序中有两个页面:一个嵌入到Ios 等高导航栏,ios,uinavigationcontroller,Ios,Uinavigationcontroller,我的应用程序中有两个页面:一个嵌入到UINavigationController中,另一个没有。不在UINavigationController中的页面有一个UINavigationBar,我将其拖入并将其提示符设置为空字符串,以稍微增加其高度。但是,这会使其略高于UINavigationController中嵌入的页面。这是一张并排的照片: 如果我在左侧页面的导航栏上设置一个提示,它的高度会变得太高。当我转到情节提要检查器时,我看到它的高度应该是74: 有人知道如何人为地使嵌入到UINav
UINavigationController
中,另一个没有。不在UINavigationController
中的页面有一个UINavigationBar
,我将其拖入并将其提示符设置为空字符串,以稍微增加其高度。但是,这会使其略高于UINavigationController
中嵌入的页面。这是一张并排的照片:
如果我在左侧页面的导航栏上设置一个提示,它的高度会变得太高。当我转到情节提要检查器时,我看到它的高度应该是74:
有人知道如何人为地使嵌入到
UINavigationController
中的页面上的条与不嵌入的条的高度相同吗?我能够回答我自己的问题
我只是通过编程更改了自定义UINavigationController
子类中的高度:
override func viewDidAppear(_ animated: Bool) {
let bounds = self.navigationBar.bounds
self.navigationBar.frame = CGRect(x: 0, y: 0, width: bounds.width, height: 74)
}
虽然你已经回答了你的问题,但是高度差是一种情况下提示的结果,而不是另一种情况。那么,在
UINavigationController
中为ViewController添加空字符串prompt
有什么错呢
如果在UINavigationController
中有许多视图控制器,并且不想在每个视图控制器中显式设置提示符,则可以使用willShow
或didShow
事件在单个位置为所有子控制器设置提示符
这应该比您的方法可靠得多,因为实际上并非所有设备和所有设备方向上的导航栏高度都相同(AFAIR iPad纵向和横向不同),此外,苹果可以在iOS版本之间进行更改。对于手动添加
UINavigationBar
的其他人来说,这种情况很常见(即不通过嵌入UINavigationController
)
通用UINavigationBar
的高度为44点
问题是手动添加的UINavigationBar上方存在20点差距
对于嵌入式版本,间隙(假设存在)的背景颜色与UINavigationBar
相同。添加提示时,会添加30个向上扩展的点。因此,不再是20+44=64分,而是74分。而嵌入式UINavigationBar
有64个点。因此相差10分。出于同样的原因,在嵌入式UINavigationBar
上添加“(空格
)将导致高度高于74点
我认为最好的办法是将另一个ViewController
嵌入新的UINavigationController
中。iOS足够聪明,可以把它当作只有一个导航控制器,而不是两个。用户不会感受到任何差异。对于程序员,如果需要以编程方式查找第二个视图控制器,则需要考虑额外的UINavigationController
尝试在UINavigationBar中设置高度等于64的约束。
Navigartionbar具有相同的恒定大小44。要么嵌入它,要么使用自定义导航。请检查下面的图片
在这里,我在第一个和第二个嵌入式导航是有一个自定义的。不存在高度问题。这将使NavigationController内的NavigationBar略高于NavigationController外的NavigationBar。(差10分)。这是另一种方式,以前的短现在成为一个新的更高。
self.navigationItem.prompt = "";