Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 等高导航栏_Ios_Uinavigationcontroller - Fatal编程技术网

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 = "";