Поскольку вы не указали, я предполагаю, что для кнопки «Тип» в раскадровке установлено значение «Система» (тип кнопки по умолчанию при перетаскивании нового UIButton
в раскадровках).
По умолчанию системные кнопки берут любое изображение, установленное на нем, и применяют к нему режим визуализации шаблона, который заставляет изображение отображать все непрозрачные пиксели в виде плоского цвета (например, цвет оттенка кнопки в этом случае, который по умолчанию системный синий цвет, который вы видите).
UIImage
s по умолчанию имеют renderingMode
из automatic
, что означает Фактический эффективный режим рендеринга, который принимает изображение, определяется тем, что использует изображение (в данном случае UIButton
).
Однако можно создать экземпляр UIImage
с renderingMode
из alwaysOriginal
, чтобы он никогда не обрабатывался как шаблонное изображение. Есть несколько способов сделать это.
1. Программно
Вы можете создать новый объект изображения с новым режимом рендеринга в коде, взяв уже созданное изображение:
UIImage(named: "logo")
и вызвав withRenderingMode(_:)
чтобы вернуть вам новый UIImage
объект, который вы затем установили на свою кнопку:
let logoImage = UIImage(named: "logo")
let logoImageAlwaysOriginal = logoImage?.withRenderingMode(.alwaysOriginal)
button.setImage(logoImageAlwaysOriginal, for: .normal)
2. Каталог активов
Более простой способ, чем использовать указанный выше путь программирования c, - просто изменить тип рендеринга изображения по умолчанию в вашем каталоге ресурсов. Нажмите на изображение, которое вы хотите изменить в каталоге активов (в данном случае «lo go»), затем go в Инспекторе атрибутов (сочетание клавиш: option + command + 4) и измените «Render As» атрибут "Исходное изображение". Теперь, когда вы используете или получаете это изображение из каталога ресурсов (либо в раскадровках, либо в коде), изображение будет иметь режим рендеринга .alwaysOriginal
.
. Вы можете сделать любое из следующих действий: вышеупомянутые параметры и сохраните тип системной кнопки, ИЛИ вы можете просто изменить тип кнопки на «Пользовательский» в раскадровке, поскольку пользовательские кнопки не применяют режим визуализации шаблона к своим изображениям по умолчанию. Однако вы теряете некоторые приятные вещи, когда не используете тип системной кнопки, например, цвет текста больше не берется из цвета оттенка кнопки, и кнопка не имеет приятной анимации затухания при нажатии.