Usando o Xcode 9.2, nenhuma das soluções acima funcionou para o que eu estava procurando.
Eu estava procurando uma solução que permitisse definir .normal
e .selected
UIControlState
imagens dentro do storyboard para o modo de renderização original , mas, dentro do arquivo Swift, nenhuma literal de cadeia de caracteres deve existir em relação aos nomes das imagens.
Basicamente, dentro do seu código, você obterá a imagem definida no storyboard para .normal
estado e a renderizará novamente como .alwaysOriginal
(o mesmo para .selected
estado); depois, você definirá a imagem (que agora é renderizada como original e não será afetada por tonalidade) para o estado relevante ( .normal
e .selected
) do seuUIButton
.
Aqui está:
// Get your .normal image (you set via your storyboard) and render it as original
let unselectedImage = yourButton.image(for: .normal)?.withRenderingMode(.alwaysOriginal)
// Set your normal image but this time rendered as original
yourButton.setImage(unselectedImage, for: .normal)
// Same for selected state
let selectedImage = yourButton.image(for: .selected)?.withRenderingMode(.alwaysOriginal)
yourButton.setImage(selectedImage, for: .selected)
Dessa forma, você pode definir os estados da imagem do botão e, se o nome da imagem mudar, isso não afetará o seu código.