【发布时间】:2011-02-23 14:39:32
【问题描述】:
无论我尝试初始化 UIBarButtonItem 的任何图像,它都只显示图像大小的白色背景。即使我厌倦了界面生成器,结果也是一样的。当与其他对象一起使用时,所有这些图像都可以完美地工作。
我该如何解决这个问题??
【问题讨论】:
-
很难在没有看到您的代码或 IB 设置的情况下判断
标签: iphone uibarbuttonitem uitoolbar
无论我尝试初始化 UIBarButtonItem 的任何图像,它都只显示图像大小的白色背景。即使我厌倦了界面生成器,结果也是一样的。当与其他对象一起使用时,所有这些图像都可以完美地工作。
我该如何解决这个问题??
【问题讨论】:
标签: iphone uibarbuttonitem uitoolbar
只有图像中的 alpha 值用于创建条形按钮图像。您提供的任何图像都会根据 Alpha 值转换为带有白色阴影的图像。
因此,鉴于您的图像是完全白色的,很明显您没有任何透明度。
guidelines 有话要说:
- 使用 PNG 格式。
- 使用带有适当 alpha 的纯白色。
- 不要包含投影。
- 使用抗锯齿。
- 如果您决定添加斜角,请确保它是 90°(以帮助您 这个,想象一个光源 位于图标顶部)。
- 对于工具栏和导航栏图标,创建一个可测量的图标 大约 20 x 20 像素。
- 对于标签栏图标,创建一个大小约为 30 x 30 像素的图标。
注意:您提供的图标 工具栏、导航栏和选项卡 条用作掩码来创建 您在应用程序中看到的图标。它 没有必要创建一个 全彩图标。
但是,您可以使用自定义视图来获得全彩图像,如此问题所示:
Can I have a UIBarButtonItem with a colored image?
这有点过头了,最好遵守指南并使用带有适当格式图像的普通按钮。
【讨论】:
从 ios 7 开始,这会有所帮助
UIImage *image = [[UIImage imageNamed:@"myImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(YOUR_METHOD:)];
【讨论】:
在 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]
【讨论】: