Eu tenho um UIImageView chamado "theImageView", com UIImage em uma única cor (plano de fundo transparente), assim como o coração preto esquerdo abaixo. Como posso alterar a cor da tonalidade desta imagem programaticamente no iOS 7 ou superior, de acordo com o método de tonalidade usado nos ícones da barra de navegação do iOS 7+?
Esse método também pode funcionar no WatchKit para um aplicativo Apple Watch?
UIImage
comUIImageRenderingModeAlwaysTemplate
e em seguida, definindoUIImageVIew
'stintColor
trabalho faz. (no meu código ^^)Respostas:
iOS
Para um aplicativo iOS, no Swift 3, 4 ou 5:
Para Swift 2:
Enquanto isso, a moderna solução Objective-C é:
Watchkit
Nos aplicativos do WatchKit para Apple Watch, você pode definir a cor da tonalidade de uma imagem de modelo .
Para definir a cor da tonalidade no Swift 3 ou 4:
Swift 2:
Para definir a cor da tonalidade em Objective-C:
Se você usar uma imagem de modelo e não aplicar uma cor de tonalidade, será aplicada a tonalidade global do seu aplicativo WatchKit. Se você não definiu uma tonalidade global, a
theImage
cor será azul claro por padrão quando usada como imagem de modelo.fonte
Aqui está uma categoria que deve fazer o truque
então você faria:
fonte
Eu tive que fazer isso no Swift usando um
extension
.Eu pensei em compartilhar como eu fiz isso:
Uso:
theImageView.image = theImageView.image.imageWithColor(UIColor.redColor())
Swift 4
Uso:
theImageView.image = theImageView.image?.imageWithColor(color1: UIColor.red)
fonte
color1.setFill()
direita abaixo da primeira linha do métodoUIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
.CGBlendMode.Normal
vezNo storyboard e na imagem Ativos. você pode alterar esses dois também:
Atualizar o modo de renderização para a imagem do modelo
Atualize a cor da tonalidade nas vistas.
fonte
imageView.tintColor
do código.Swift 4
Altere o tom do UIImage SVG / PDF , que funciona para imagens com cores únicas :
Altere o tom do UIImageView , que funciona para imagens com cores exclusivas :
Altere a tonalidade de UIImage para imagem , use o seguinte:
fonte
Se alguém se importa com uma solução sem
UIImageView
:fonte
Com Swift
fonte
.AlwaysTemplate
.Tente isto
http://robots.thoughtbot.com/designing-for-ios-blending-modes
ou
fonte
Para 3 propósitos rápidos
theImageView.image = theImageView.image!.withRenderingMode(.alwaysTemplate) theImageView.tintColor = UIColor.red
fonte
Para colorir a imagem de um UIButton
fonte
iOS
Solução para fazer isso no Interface Builder, defina o parâmetro templateImage no keyPath e escolha a cor da tonalidade no IB
}
fonte
Com o iOS 13 e superior, você pode simplesmente usar
fonte
Beneficie da extensão em Swift: -
fonte
Versão Swift 3 da resposta de extensão do fuzz
fonte
Agora eu uso esse método com base na resposta de Duncan Babbage:
fonte
fonte
Subclasse que também pode ser usada no código e no Interface Builder:
fonte
Esta é a minha extensão UIImage e você pode usar diretamente a função changeTintColor para uma imagem.
Exemplo de uso como este
E você pode usar a
changeColor
função de alteração para alterar a cor da imagemfonte
profileImageView.image = theImageView.image! .withRenderingMode (.alwaysTemplate)
profileImageView.tintColor = UIColor.green
OU
Primeiro, selecione Imagem particular no ativo da imagem e depois selecione vermelho como modelo em vez de padrão e depois a linha de gravação. profileImageView.tintColor = UIColor.green
fonte
se você tiver algum ID para a imagem SVG, poderá preencher as cores com relação ao ID.
OU Confira este exemplo.
https://github.com/ravisfortune/SVGDEMO
fonte
fonte