UILabel sous-classe initialiser avec des couleurs personnalisées
Mon but est de mettre la textColor
de ma coutume UILabel
sous-classe de mon point de vue contrôleur. J'ai un UILabel
sous-classe nommée CircleLabel
. Voici les bases:
class CircleLabel: UILabel {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
override init(frame: CGRect) {
super.init(frame: frame)
}
override func drawRect(rect: CGRect) {
self.layer.cornerRadius = self.bounds.width/2
self.clipsToBounds = true
super.drawRect(rect)
}
override func drawTextInRect(rect: CGRect) {
self.textColor = UIColor.whiteColor()
super.drawTextInRect(rect)
}
func setProperties(borderWidth: Float, borderColor: UIColor) {
self.layer.borderWidth = CGFloat(borderWidth)
self.layer.borderColor = borderColor.CGColor
}
}
Comme vous pouvez le voir, chaque CircleLabel j'instancie est paramétré par défaut pour une textColor propriété de UIColor.whiteColor(), qui fonctionne correctement. De mon point de vue du contrôleur de viewDidLoad, je veux mettre mon CircleLabel dynamique textColor
de la propriété. Donc quelque chose comme ceci:
class myViewController: UIViewController {
@IBOutlet weak var myCustomLabel: CircleLabel!
override func viewDidLoad() {
super.viewDidLoad()
myCustomLabel.textColor = UIColor.blackColor()
}
Qui ne fonctionne pas parce que textColor
est situé dans le drawRect
méthode de la UILabel
sous-classe. Que puis-je mettre en œuvre dans ma CircleLabel
sous-classe (via une méthode d'assistance comme mon setProperties méthode d'assistance ou d'une autre façon) qui me permettrait de définir la textColor
de mon étiquette personnalisée de mon point de vue contrôleur?
Vous devez vous connecter pour publier un commentaire.
Capture d'écran
Vous n'avez pas besoin de remplacer
drawRect
dans votre cas,il suffit de créer la classe comme ceciPuis
Initializer does not override a designated initializer from its superclass
lors de l'utilisation deoverride init
sur leUILabel
1. Une Étiquette personnalisée Dans swift