2017-09-19 7 views
0

J'ai une question sur la création d'un UIColor personnalisé dans swift.Création de couleur personnalisée pour UIColor

J'ai utilisé le code d'extension suivant:

import UIKit 

extension UIColor { 
    convenience init(red: Int, green: Int, blue: Int) { 
    let newRed = CGFloat(red)/255 
    let newGreen = CGFloat(green)/255 
    let newBlue = CGFloat(blue)/255 

    self.init(red: newRed, green: newGreen, blue: newBlue, alpha: 1.0) 


    } 
} 

let brandBlue = UIColor(red: 0, green: 127, blue: 255) 

Je veux le charger dans, shadowColor, sous le code suivant:

class squareButton : UIButton { 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.layer.cornerRadius = 10.0 
     self.layer.shadowColor = (Loading code here) 
     self.layer.shadowRadius = 1.5 
     self.layer.shadowOffset = CGSize(width: 0.0, height: 2.0) 
     self.layer.shadowOpacity = 0.6 
     self.layer.masksToBounds = false 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     self.layer.cornerRadius = 10.0 
     self.layer.shadowColor = (Loading code here) 
     self.layer.shadowRadius = 1.5 
     self.layer.shadowOffset = CGSize(width: 0.0, height: 2.0) 
     self.layer.shadowOpacity = 0.6 
     self.layer.masksToBounds = false 
    } 
} 

Mais toutes les combinaisons je ne fonctionnera pas. Chaque fois qu'il est dit que je devrais utiliser comme! CGColor mais quand je fais cela, l'application se bloque.

S'il vous plaît aidez-moi

Merci

+0

Avez-vous besoin d'aide sur ce sujet? Si c'était utile, ce serait formidable, si vous pouvez marquer ma réponse comme la bonne. Merci – AlexWoe89

Répondre

3

Dans votre code que vous fournissez actuellement self.layer.shadowColor = (Loading code here) un UIColor ce qui devrait provoquer une erreur du compilateur.

L'extension que vous avez créée est correcte. Utilisez simplement la propriété .cgColor de UIColor après avoir instancié votre nouvelle instance UIColor. Ce serait alors l'exemple de code:

class SquareButton: UIButton { 

    let brandBlue: UIColor = UIColor(red: 0, green: 127, blue: 255) 

    override init(frame: CGRect) { 
     super.init(frame: frame) 
     self.layer.cornerRadius = 10.0 
     self.layer.shadowColor = brandBlue.cgColor 
     self.layer.shadowRadius = 1.5 
     self.layer.shadowOffset = CGSize(width: 0.0, height: 2.0) 
     self.layer.shadowOpacity = 0.6 
     self.layer.masksToBounds = false 
    } 

    required init?(coder aDecoder: NSCoder) { 
     super.init(coder: aDecoder) 
     self.layer.cornerRadius = 10.0 
     self.layer.shadowColor = brandBlue.cgColor 
     self.layer.shadowRadius = 1.5 
     self.layer.shadowOffset = CGSize(width: 0.0, height: 2.0) 
     self.layer.shadowOpacity = 0.6 
     self.layer.masksToBounds = false 
    } 
} 
1

CGColor et UIColor ne sont pas les mêmes et CALayer.shadowColor doit être un CGColor. Vous pouvez obtenir un CGColor à partir d'un UIColor en appelant la propriété cgColor sur une instance UIColor.

Comme ceci: self.layer.shadowColor = UIColor(red: 0, green: 127, blue: 255).cgColor