无论我尝试初始化UIBarButtonItem的任何图像,它只显示图像大小的白色背景。即使我在界面构建器中累了,结果也是一样的。所有这些图像与其他对象一起使用时效果很好。
我该如何解决这个问题?
答案 0 :(得分:20)
仅图像中的Alpha值用于创建条形按钮图像。无论您提供什么图像,都会根据Alpha值将其转换为白色阴影的图像。
因此,鉴于您的图像完全是白色,很明显您没有任何透明度。
guidelines有这样说:
- 使用PNG格式。
- 使用纯白色和适当的alpha。
- 不要包含阴影。
- 使用抗锯齿。
- 如果您决定添加斜角,请确保它是90°(以帮助您 这个,想象一下光源 位于图标的顶部)。
- 对于工具栏和导航栏图标,请创建一个测量图标 约20 x 20像素。
- 对于标签栏图标,请创建一个大约30 x 30像素的图标。
注意:您提供的图标 工具栏,导航栏和选项卡 bar用作掩码来创建 您在应用程序中看到的图标。它 没有必要创建一个 全彩图标。
您可以使用自定义视图来获取全彩色图片,如下所示:
Can I have a UIBarButtonItem with a colored image?
虽然这有点过头但最好坚持使用指南并使用带有适当格式图像的普通按钮。
答案 1 :(得分:13)
在ios 7以后,这将有所帮助
UIImage *image = [[UIImage imageNamed:@"myImage.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
UIBarButtonItem *button = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain target:self action:@selector(YOUR_METHOD:)];
答案 2 :(得分:5)
在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]