2017-08-17 1 views
0

J'ai créé un UIButton comme suit (bouton rond avec des propriétés d'ombre rien d'extraordinaire):vue de la transformation rotation annulait le rendu des images des effets dans iOS

let button = UIButton(type: .system) 
    button.backgroundColor = UIColor(hexString: "4267B2") 
    button.tintColor = .white 
    button.setImage(#imageLiteral(resourceName: "add").withRenderingMode(.alwaysTemplate), for: .normal) 
    button.addTarget(self, action: #selector(handleClick), for: .touchUpInside) 
    button.translatesAutoresizingMaskIntoConstraints = false 
    button.layer.cornerRadius = 32 
    button.layer.shadowColor = UIColor.darkGray.cgColor 
    button.layer.shadowRadius = 6 
    button.layer.shadowOpacity = 0.6 
    button.layer.shadowOffset = CGSize.zero 

Le but est de sembler comme un bouton Ajouter à cliquer tourne pour former un bouton croisé.

func handleClick() { 
    button.isSelected = !newPostButton.isSelected 
    let rotationDirection: CGFloat = button.isSelected ? 1: -1 
    UIView.animate(withDuration: 0.5) { 
     self.button.transform = self.button.transform.rotated(by: (rotationDirection * .pi/4)) 
    } 
} 

La question que je rencontre est lorsque l'animation se produit pour la rotation de la rotation fonctionne parfaitement, mais l'image fournie pour le bouton .withRendering: est réduit à néant, comme indiqué ci-dessous:

InitiallyFinally

Y at-il une solution? (avec le code pas de bibliothèques s'il vous plaît) J'ai cherché à travers le net, mais aucun n'a eu un problème similaire.

Répondre

1

Vous pouvez définir le type de votre bouton sur .custom au lieu de .system. Cela devrait résoudre votre problème.

+0

Merci, vous avez économisé beaucoup de temps. –

+0

vous êtes les bienvenus :) –