在应用程序的各个部分(背景图像和形状)中自定义UIBarButtonItems

时间:2013-04-29 02:39:44

标签: ios objective-c uinavigationbar uibarbuttonitem uitoolbar

我想更改我的UIBarButtonItems的背景图片。在根视图中,我希望它们是导航栏中的某个背景图像(但仍然是圆形矩形按钮),但在下一个视图中,我有一个UIToolBar,我希望它再次具有不同的背景。

我在我的app委托中使用了[[UIBarButtonItem] appearance]来改变所有这些,但我现在意识到我想要一种风格,而另一种风格则是另一种风格。

更重要的是,我不仅要更改背景图像,还要更改某些形状。对于其中一个UIToolBar的UIBarButtonItems,我希望它在导航栏中的后退按钮形状。我怎么能实现这个目标?

我可以使用概述here的方法实现这两个目标吗?

基本上:我如何在整个应用程序中制作自定义UIBarButtonItems,并使其具有不同的形状?

2 个答案:

答案 0 :(得分:0)

如果希望按钮在不同的视图控制器中看起来不同,则应在视图控制器中设置它们,而不是在委托中。在init方法或viewWillAppear:方法中添加代码以自定义按钮。如果您要自定义UIToolbar项,请使用与the link you gave类似的代码。如果它是导航栏,请执行以下操作:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
//Customise button with background etc that you want

UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:btn];
self.navigationItem.leftBarButtonItem = item;
//Release item if you're not using ARC

答案 1 :(得分:0)

您可以使用UIAppearance Protocol http://developer.apple.com/library/ios/#documentation/uikit/reference/UIAppearance_Protocol/Reference/Reference.html

中的'appearanceWhenContainedIn'方法

因此,对于工具栏,您可以使用: [UIBarButtonItem appearanceWhenContainedIn:[UIToolbar class], nil]

对于NavBar: [UIBarButtonItem appearanceWhenContainedIn:[UINavigationController class], nil]