在 UINavigationBar 的子类中设置 backButton 框架

Posted

技术标签:

【中文标题】在 UINavigationBar 的子类中设置 backButton 框架【英文标题】:Setting the backButton frame in a subclass of UINavigationBar 【发布时间】:2012-04-20 05:17:30 【问题描述】:

对于使用 ARC 的 ios 5.0 中的 iPad,我使用 UINavigationBar 的子类来制作带有更宽栏的自定义导航栏。在我使用时,此导航栏上的后退按钮需要垂直居中更宽的后退按钮。现在,它在自然位置拥抱底部。我知道我可以在每个视图控制器的 viewDidLoad 方法上使用UINavigationItem 重新定位它。

但是,是否可以在我创建的 UINavigationBar 的自定义子类中获取返回按钮,以便我可以使用 layoutSubviews 将其垂直居中放置?

在此先感谢您的帮助。

【问题讨论】:

【参考方案1】:

请试试这个,我想这对你有帮助

// image for my back button
UIImage *backButtonImage= [UIImage imageNamed:@"Back.png"];
UIButton *leftBarButton = [UIButton buttonWithType: UIButtonTypeCustom];

// Setting the image for the back button
[leftBarButton setBackgroundImage: backButtonImage forState:UIControlStateNormal];  
[leftBarButton addTarget: self action:@selector(backToMenu:) forControlEvents:UIControlEventTouchUpInside];

 // setting the frame for the back button
leftBarButton.frame = CGRectMake(0, 0, 65, 32);  

// setting the custom button to navigationbars back button
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView: leftBarButton];

【讨论】:

【参考方案2】:

你试过了吗:

 navigationBar.backItem.leftBarButtonItem

【讨论】:

谢谢,可能需要使用 backitem 或 topitem 。但是,仍然无法到达框架来修改它.. 或重新定位它

以上是关于在 UINavigationBar 的子类中设置 backButton 框架的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式在 UINavigationController 中设置 UINavigationBar 的自定义子类

如何在 iOS7 中设置 UINavigationBar? [复制]

如何使用 iOS5 外观 API 在 UINavigationBar 中设置标题的字体和颜色?

在 UINavigationController 中设置自定义导航栏类

在 UINavigationController 中设置自定义导航栏类

在子类中设置超类字段