如何获取UINavigationBar中后退按钮的宽度?

问题描述:

我们有一个控制器,可能会从几个地方推,所以它的后退按钮可能有几个标题之一。它还有一个弹出另一个控制器的按钮。他们都有相同的自定义标题元素,但他们居中不同,因为第二个控制器没有后退按钮。我想添加一个间隔器来解决这个问题,但我不知道要制作它的宽度。如何获取UINavigationBar中后退按钮的宽度?如何获取UINavigationBar中后退按钮的宽度?

你总是可以通过导航栏的子视图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将显示不同的结果。

尝试这种方式

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

没有喜悦 - navigationItem属性为零。 – Simon

+0

oops @simon你让我。谢谢 – Anand