Как бы я создал элемент панели кнопок, который имеет как заголовок, так и изображение в iOS, с изображением, показывающим, как без оттенка? - PullRequest
0 голосов
/ 02 ноября 2018

Я нашел решения в стеке переполнение для создания элемента панели кнопок в iOS, который имеет как заголовок, так и изображение, но изображение имеет синий оттенок вместо того, чтобы отображаться как есть. Я нашел решения в стеке overflow , чтобы показать изображение в элементе панели кнопок как есть, без отображения синего оттенка, но элемент кнопки панели не отображает заголовок.

Можно ли создать элемент кнопки панели с заголовком и изображением, на котором изображение отображается как есть?

Вот мой код:

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 голосов
/ 02 ноября 2018

Я согласен с ответом выше, но в моем случае код ниже работает нормально.

button.setImage(UIImage(named: "ImageName.png").withRenderingMode(.automatic), for: UIControl.State.normal)
0 голосов
/ 02 ноября 2018

Как вы уже упоминали в вопросе, при использовании type в качестве system вы можете видеть изображение и заголовок.

Итак, вы пользуетесь UIB-кнопкой типа системы и измените приведенную ниже строку из своего кода

button.setImage(image, for: .normal)

к этому:

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

Это не позволит нанести оттенок поверх вашего изображения и будет использовать оригинальное изображение.

...