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

时间:2010-06-20 22:38:44

标签: ios iphone objective-c background uibarbuttonitem

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

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

导航控制器上的按钮似乎是透明的,并显示导航控制器的自定义背景,或者他们自己应用了自定义背景。关于如何实现这一点的任何想法?

编辑:

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

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

4 个答案:

答案 0 :(得分:13)

如果您希望应用程序中的UIBarButtonItem无处不在,您可以在AppDelegate.mapplication:didFinishLaunchingWithOptions:方法中执行以下操作

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

这将创建一个空图像,并将UIBarButtonItem的背景设置为该图像。将其写入AppDelegate,您将确保使用UIBarButtonitem的所有地方,它将具有透明背景,甚至是您的后退按钮。

答案 1 :(得分:4)

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

查看UIBarButtonItem文档。有init种方法可以获取自定义视图或图片,并从中创建UIBarButtonItem。因此,使用您想要的外观创建视图或图像并使用它。您可能想要尝试的一件事是按照您希望的方式创建UIButton,然后执行[[UIBarButtonItem alloc] initWithCustomView:button];

另一个解决方案是将tintColor的{​​{1}}属性发送到您想要的任何颜色,按钮将采用该颜色。

答案 2 :(得分:3)

您还可以创建标准UIButton并将其样式设置为自定义,并为该按钮设置图像或背景颜色,然后将其拖到UINavigationBar上。

答案 3 :(得分:1)

您还可以使用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,因为您可能偶然发现了该错误。