如何在iOS中创建同时具有标题和图像的条形按钮项,并且图像按原样显示而没有色调?

时间:2018-11-02 04:43:56

标签: ios uibutton uibarbuttonitem

我在堆栈上找到了解决方案溢出,可以在iOS中创建具有标题和图像的条形按钮项,但是图像具有蓝色,而不是按原样显示。我找到了堆栈上的解决方案溢出,可以按原样在条形按钮项中显示图像而不显示蓝色,但条形按钮项不显示标题。

是否可以创建同时显示标题和图像并显示图像的条形按钮项目?

这是我的代码:

let image = UIImage(named: "iMessage Icon 40x30.png")
let button = UIButton(type: .custom)
button.frame = CGRect(x: 0, y: 0, width: 500, height: 30)
button.setTitle("Purchase iMessage Saved Messages", for: .normal)
button.setImage(image, for: .normal)
button.addTarget(self, action: #selector(self.tap), for: .touchUpInside)
button.sizeToFit()
let customBarButtonItem = UIBarButtonItem(customView: button)
navigationItem.leftBarButtonItem = customBarButtonItem

此代码使用图像按原样创建条形按钮项目,没有蓝色,但是标题不显示。如果我更改第二行代码并将UIButton对象初始化为类型系统,则标题与图像一样显示,但是图像具有蓝色,这是我不想要的。

2 个答案:

答案 0 :(得分:1)

正如您已经提到的那样,使用type作为系统,您可以同时看到图像和标题。

因此,您使用系统类型的UIButton,并从代码中更改以下行

button.setImage(image, for: .normal)

对此:

button.setImage(image.withRenderingMode(.alwaysOriginal), for: .normal)

这将不允许在您的图像上应用色调,并将使用原始图像。

答案 1 :(得分:1)

我同意以上答案,但就我而言,以下代码可以正常工作。

button.setImage(UIImage(named: "ImageName.png").withRenderingMode(.automatic), for: UIControl.State.normal)