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是将UINavigationBar
的tintColor
属性发送到您想要的任何颜色,并且该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,因为您可能会偶然发现该错误。