2016-03-28 89 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。首先在故事板中執行此操作,這是最簡單的方法。