1

我們有一個控制器,可能會從幾個地方推,所以它的後退按鈕可能有幾個標題之一。它還有一個彈出另一個控制器的按鈕。他們都有相同的自定義標題元素,但他們居中不同,因爲第二個控制器沒有後退按鈕。我想添加一個間隔器來解決這個問題,但我不知道要製作它的寬度。如何獲取UINavigationBar中後退按鈕的寬度?如何獲取UINavigationBar中後退按鈕的寬度?

回答

5

你總是可以通過導航欄的子視圖spelunk,尋找後退按鈕查看和摘大小,當你找到它。我做了一個博客張貼了一段時間後通過一個UIView的子視圖迭代,這裏是網址:

http://www.dosomethinghere.com/2011/07/09/logging-the-view-hierarchy/

我使用上面的網址在我目前的應用程序描述的InspectView類,當我插入此代碼到一個視圖控制器,其具有在所述導航欄後退按鈕:

- (void)viewDidAppear:(BOOL)animated 
{ 
    [InspectView dumpViewToLog:self.navigationController.navigationBar findParent:NO]; 
} 

這是在控制檯得到的輸出:

2011-09-20 09:11:19.599 MyApp[2070:207] 
Inspect view hierarchy ----------------------------------- 
UINavigationBar (0x6626460): frame origin: (0, 20) size: (320, 44) [tag=0] UIView : UIResponder : NSObject : 
. UILabel (0x6613f00): frame origin: (62, 0) size: (200, 44) [tag=0] UIView : UIResponder : NSObject : 
. . UILabel (0x6628520): frame origin: (0, 19) size: (200, 20) [tag=0] UIView : UIResponder : NSObject : 
. . UILabel (0x665eda0): frame origin: (0, -1) size: (200, 24) [tag=0] UIView : UIResponder : NSObject : 
. UINavigationItemButtonView (0x662a5b0): frame origin: (5, 7) size: (49, 30) [tag=0] UINavigationItemView : UIView : UIResponder : NSObject : 
End of view hierarchy ----------------------------------- 

UINavigationItemButtonView是後退按鈕,您可以看到大小爲49寬30高。你會在你的應用程序中尋找這個視圖類,並記住它的大小。

請注意,將此代碼放入viewDidLoad或viewWillAppear將顯示不同的結果。

-1

嘗試這種方式

NSLog(@"frame =%f",self.navigationController.navigationItem.rightBarButtonItem.width); 
+0

沒有喜悅 - navigationItem屬性爲零。 – Simon

+0

oops @simon你讓我。謝謝 – Anand

相關問題