【问题标题】:Custom background/transparent background on UIBarButtonItem?UIBarButtonItem 上的自定义背景/透明背景?
【发布时间】:2010-06-20 22:38:44
【问题描述】:

这个效果是怎么实现的?代码 sn-ps 非常受欢迎。

这可以在备忘录应用和 App Store 的其他应用中看到。

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

编辑:

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

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

【问题讨论】:

  • 我填了一个 bug (radar:12433673) 并添加了一个示例代码项目。

标签: ios iphone objective-c background uibarbuttonitem


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 当然,当我点击提交时,我看到 Macatomy 就是这么说的。所以呃......他们说了什么:)
      【解决方案4】:

      您还可以使用 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?)时存在错误,因此如果您遇到问题,请尝试更改插图,因为您可能偶然发现了该错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多