簡體   English   中英

如何獲得UINavigationBar中后退按鈕的寬度?

[英]How do I get the width of the back button in a UINavigationBar?

我們有一個可能從幾個地方推出的控制器,因此它的后退按鈕可能有幾個標題之一。 它還有一個彈出另一個控制器的按鈕。 它們都具有相同的自定義標題元素,但它們的中心位置不同,因為第二個控制器沒有后退按鈕。 我想添加一個墊片來解決這個問題,但我不知道它的寬度。 如何獲得UINavigationBar中后退按鈕的寬度?

您可以隨時瀏覽導航欄的子視圖,查找后退按鈕視圖並在找到它時拾取大小。 我在博客上發布了一段時間來迭代UIView的子視圖,這里是URL:

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

我在當前應用程序中使用上述URL中描述的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將顯示不同的結果。

試試這種方式

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM