11

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

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

似乎导航控制器上的按钮是透明的并显示导航控制器的自定义背景,或者它们本身具有应用到它们的自定义背景。关于如何实现的任何想法?

编辑:

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

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

4

4 回答 4

13

如果你想UIBarButtonItem在你的应用程序中到处都有,你可以做的是在你AppDelegate.mapplication:didFinishLaunchingWithOptions:方法中,你可以写

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

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

于 2013-03-22T02:50:34.627 回答
4

我认为您不能仅通过设置某种属性来使其透明(但我可能错了)。

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

另一种解决方案是将您的tintColor属性发送到您UINavigationBar想要的任何颜色,然后按钮将采用该颜色。

于 2010-06-20T23:20:02.470 回答
3

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

于 2010-06-21T00:24:32.173 回答
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];

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

于 2013-01-03T17:25:02.440 回答