UIBarButtonItem上的自定义背景/透明背景?

这个效果如何实现? 代码片段非常受欢迎。

这可以在Notes应用程序和App Store上的其他应用程序中看到。

看起来,导航控制器上的button都是透明的,并显示导航控制器的自定义背景,或者他们自己有一个自定义背景适用于他们。 任何想法如何实现?

编辑:

以下是iPhone的iBooks应用程序示例。 正如你所看到的,不仅UIButtons,而且分段控件都有自定义的背景。 我在想,有一种方法可以将透明度/背景全局设置为不同的界面元素。

例 http://c0839932.cdn.cloudfiles.rackspacecloud.com/iBooks%201.1%20-%206.png

如果你想在应用程序的任何地方都有UIBarButtonItem ,你可以在AppDelegate.m和你的application:didFinishLaunchingWithOptions:方法,你可以写

 [[UIBarButtonItem appearance] setBackgroundImage:[[UIImage alloc] init] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

这将创build一个空的图像,并将UIBarButtonItem的背景设置为该图像。 将它写入AppDelegate您将确保您使用UIBarButtonitem任何位置都具有透明背景,即使是后退button。

我不认为只要设置某种属性就可以使它透明(但我可能是错的)。

看看UIBarButtonItem文档。 有init方法将采取自定义视图或图像,并UIBarButtonItem创build一个UIBarButtonItem 。 因此,创build一个视图或图像与你想要的外观和使用。 你可能想要尝试的一件事就是按照你想要的方式创build一个UIButton ,然后执行[[UIBarButtonItem alloc] initWithCustomView:button];

另一个解决scheme是将UINavigationBartintColor属性发送到您想要的任何颜色,并且该button将采用该颜色。

您也可以创build一个标准的UIButton并将其样式设置为自定义,并为该button设置图像或背景颜色,并将其拖到UINavigationBar

您还可以使用Appearance代理将UIBarButtonItems的backgroundImage属性设置为您自己的透明图像:

 UIImage *buttonImage = [[UIImage imageNamed:@"barButton"] resizableImageWithCapInsets:UIEdgeInsetsMake(12, 8, 12, 8)]; [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; [[UIBarButtonItem appearanceWhenContainedIn:[UINavigationBar class], nil] setBackButtonBackgroundImage:buttonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault]; 

请注意,我认为将insets设置为某些值(11?13?)时存在一个错误,所以如果遇到问题,请尝试更改insets,因为您可能会偶然发现该错误。