【问题标题】:UIBarButtonItem Image is not shown and instead a white rectangle in the size of image is shown, Why?UIBarButtonItem 图像没有显示,而是显示了一个图像大小的白色矩形,为什么?
【发布时间】:2011-02-23 14:39:32
【问题描述】:

无论我尝试初始化 UIBarButtonItem 的任何图像,它都只显示图像大小的白色背景。即使我厌倦了界面生成器,结果也是一样的。当与其他对象一起使用时,所有这些图像都可以完美地工作。

我该如何解决这个问题??

【问题讨论】:

  • 很难在没有看到您的代码或 IB 设置的情况下判断

标签: iphone uibarbuttonitem uitoolbar


【解决方案1】:

只有图像中的 alpha 值用于创建条形按钮图像。您提供的任何图像都会根据 Alpha 值转换为带有白色阴影的图像。

因此,鉴于您的图像是完全白色的,很明显您没有任何透明度。

guidelines 有话要说:

  • 使用 PNG 格式。
  • 使用带有适当 alpha 的纯白色。
  • 不要包含投影。
  • 使用抗锯齿。
  • 如果您决定添加斜角,请确保它是 90°(以帮助您 这个,想象一个光源 位于图标顶部)。
  • 对于工具栏和导航栏图标,创建一个可测量的图标 大约 20 x 20 像素。
  • 对于标签栏图标,创建一个大小约为 30 x 30 像素的图标。

注意:您提供的图标 工具栏、导航栏和选项卡 条用作掩码来创建 您在应用程序中看到的图标。它 没有必要创建一个 全彩图标。

但是,您可以使用自定义视图来获得全彩图像,如此问题所示:

Can I have a UIBarButtonItem with a colored image?

这有点过头了,最好遵守指南并使用带有适当格式图像的普通按钮。

【讨论】:

    【解决方案2】:

    从 ios 7 开始,这会有所帮助

    UIImage *image = [[UIImage imageNamed:@"myImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
    UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(YOUR_METHOD:)];
    

    【讨论】:

      【解决方案3】:

      在 Swift 3 中 我发现以下工作 - 这里显示为多个 barButtonItem 的数组

        let barButtonItem1    = UIBarButtonItem( image: UIImage(named: "myImage")?.withRenderingMode(.alwaysOriginal) , style: .plain ,target: self, action: #selector(yourAction))
        let barButtonItem2    = UIBarButtonItem(image: UIImage(named: "myImage")?.withRenderingMode(.alwaysOriginal)  , style: .plain, target: self, action: #selector(yourAction))
      
      navigationItem.rightBarButtonItems = [barButtonItem1, barButtonItem2]
      

      这会在右侧显示 x2 barButtons。 要向左显示,只需更改为

      navigationItem.leftBarButtonItem = [barButtonItem1, barButtonItem2]

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-04-21
        • 1970-01-01
        • 2014-11-09
        • 2021-10-12
        • 2013-09-18
        • 2012-09-26
        • 2022-10-16
        相关资源
        最近更新 更多