2017-07-22 2 views
1

Vous avez vraiment besoin d'aide ici. Je fais quelque chose de vraiment basique, j'ai un UIButton et ai mis son image à un UIImage que j'ai créé. Le fichier image est au format PNG avec un arrière-plan transparent et un premier plan blanc (le modèle réel). Cependant, le UIImage ne semble pas fonctionner. Voici quelques captures d'écran comme référence.UIImage n'affiche pas le format PNG avec des motifs de premier plan blancs

Voilà comment je mis en place le bouton:

let exitButton = UIButton() 
    exitButton.setImage(UIImage(named: "success"), for: .normal) 
    exitButton.frame = CGRect(x: 0, y: 0, width: 56, height: 56) 
    exitButton.translatesAutoresizingMaskIntoConstraints = false 

D'autres images semble fonctionner ..

c'est l'image que je utilise, cela ne fonctionne pas image that doesn't work c'est l'image que je testé, et il fonctionne this kind images words properly

seule différence est la couleur de premier plan ...

+0

Essayez de faire votre noir X. Je pense que par défaut, les images UIButton sont définies comme Template et teintées selon une formule. Je – solenoid

+0

ne semble fonctionner, mais je why..can't utilise un X blanc de toute façon. Merci d'ailleurs. –

+0

Vous pouvez créer une sous UIButton de l'avoir fixé pas l'image d'être un modèle. Mais, en utilisant le modèle, vous pouvez simplement utiliser la propriété .TintColor pour changer la couleur à tout ce dont vous avez besoin. C'est la même chose qui arrive à tabbarbuttonitems. – solenoid

Répondre

0

Les images de modèle (le mode par défaut pour les images UIButton) prennent l'alpha et représentent fondamentalement le reste comme un masque teinté. Pour une raison quelconque, le blanc n'est pas traité correctement dans le processus. La façon dont j'y pense est que vous donnez un masque au bouton, donc toutes les images que je donne aux boutons par défaut sont noires avec de la transparence.

Cependant, vous pouvez sous-classe UIButton et utiliser ce que l'image que vous souhaitez:

class buttonClose: UIButton { 
     required init?(coder aDecoder: NSCoder) { 
      super.init(coder: aDecoder) 
      if self.image(for: .normal) != nil { 
       let g:UIImage = UIImage(named: "close_button32")!.withRenderingMode(.alwaysOriginal) 
      let p:UIImage = UIImage(named: "close_button32highlighted")!.withRenderingMode(.alwaysOriginal) 

       self.setImage(g, for: .normal) 
       self.setImage(p, for: .selected) 
       self.backgroundColor = .red 
      } 
     } 
    }