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

Sim*_*mon 1 iphone objective-c uinavigationbar uinavigationcontroller uinavigationitem

我们有一个可能从几个地方推出的控制器,因此它的后退按钮可能有几个标题之一.它还有一个弹出另一个控制器的按钮.它们都具有相同的自定义标题元素,但它们的中心位置不同,因为第二个控制器没有后退按钮.我想添加一个垫片来解决这个问题,但我不知道它的宽度.如何获得UINavigationBar中后退按钮的宽度?

BP.*_*BP. 5

您可以随时浏览导航栏的子视图,查找后退按钮视图并在找到它时拾取大小.我在博客上发布了一段时间来迭代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];
}
Run Code Online (Sandbox Code Playgroud)

这是控制台中的结果输出:

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 -----------------------------------
Run Code Online (Sandbox Code Playgroud)

UINavigationItemButtonView是后退按钮,你可以看到49宽,30高的大小.您可以在应用中查找此视图类并记住大小.

请记住,将此代码放入viewDidLoad或viewWillAppear将显示不同的结果.