2016-03-28 53 views
2

我尝试将导航栏的所有元素放置在垂直中心,但我不知道该怎么做?导航栏项目不居中verticaly

enter image description here

上述黄色的灰色部分是导航栏。我们可以看到导航栏的标题和其他元素不是以垂直居中为中心的。

我该怎么做?

到目前为止我的代码:

let navigationItem = UINavigationItem() 
    navigationItem.title = sTitle;  
    navigationBar.frame = CGRectMake(0,0,screenwidth, 50); 
    navigationBar.titleTextAttributes = [ NSFontAttributeName: titleFont, NSForegroundColorAttributeName: UIColor.blackColor()] 
    self.view.addSubview(navigationBar); 
+3

20像素的空间状态栏,并且状态栏颜色为白色。所以你看不到。 –

+0

您可以为'navigationBar'声明添加更多代码吗?以及为什么你在视图控制器的视图内添加导航栏,它应该来自navigationController/ViewController,另外,由于Ashish说你还在导航栏中计算了20像素的空间。 – HardikDG

回答

0

如果您隐藏状态栏,您可以将所有元素居中,方法是将以下内容添加到您的信息中。plist中:

<key>UIStatusBarHidden</key> 
<true/> 
<key>UIViewControllerBasedStatusBarAppearance</key> 
<false/> 

和你的ViewController应该是这样的:

enter image description here

你可以看到更多的方法来隐藏在这个环节的状态栏:hide Status bar

0

首先尝试使用本地的方法来设置导航栏标题,如:

self.title="Test title" 

或者,如果你想拥有的自定义字体试试这个:

self.navigationController.navigationBar.titleTextAttributes = [ NSFontAttributeName: UIFont(name: "CustomFont", size: 15)!] 
+0

感谢您的帮助,但它没有奏效。有所有元素不居中。 “zurück”(德语意思是后面)链接是一个导航项目,也不居中。 –

0

正如在评论中提到的,这些元素不是垂直居中的原因是st显示atus栏,它在导航栏的顶部保留10个点。这只是不容易看到,因为它使用的是浅色内容风格。如果电池电量不足或充电时,您会看到右上角的电池。

您需要删除状态栏,这会降低导航栏的高度。由于根据项目设置和上下文有不同的方式来隐藏状态栏,我不会指示如何删除状态栏,但有关如何这样做的信息已广泛使用。

一旦多余的空间被删除,您的项目将垂直居中。

+0

非常感谢。好的我明白了。它与状态栏有关,但我已经用prefersStatusBarHidden = true删除了状态栏。但是我仍然看到这些物品并不居中。 –

+0

你会发布一个新的截图吗? – Joey

0

导航栏文本/项目永远不会看起来居中,而是显示内容的方式。从技术上讲,它们已经集中在导航栏中,但导航栏管理居中,并将所有元素限制在导航栏的下边缘。

状态栏需要20px。导航栏的高度应为44px。导航栏的顶部应限制为顶部布局页边距,而不是顶部视图边界本身。其原因是,当设备翻转到横向模式时,ios会移除状态栏(实际上是纵向模式中显示的前20像素)。如果您的导航栏为44像素,将设备切换到横向模式将显示文本垂直居中。

我的建议让你看到所有这些都是在导航栏上方创建一个小视图。将视图设置为20px高,将其限制为View.Top(而不是边距),并将背景或tintcolor设置为鲜绿色或其他颜色。然后将导航栏设置为44px,将其限制为顶部布局页边距指南(不是刚刚创建的状态视图的底部,并且不偏离View.Top边界)。

然后,当您来回翻转设备时,您会发现文字始终位于导航栏中央,状态栏会在导航栏上方移动。

PS。首先在故事板中执行此操作,这是最简单的方法。