J'ai créé une classe qui hérite de l'objet de vue (UIButton) Je ne comprends pas pourquoi quand je suis en train de changer le backgroundColor que j'ajouter à drawRect func par init ou par awakeFromNib func réussir, mais quand J'essaie de changer la propriété de la couche que j'ajoute dans drawRect func (comme self.layer.cornerRadius), elle ne change pas par init ou par awakeFromNib func.IOS - Les propriétés de la couche func drawRect ne peuvent pas être modifiées?
Deux questions: 1. Quelqu'un peut-il m'expliquer ce qui s'est passé dans les coulisses? 2. comment puis-je changer la propriété de la couche ajoutée dans drawRect func?
Désolé pour mon fragile Anglais J'espère qu'il est assez clair :)
Voici mon code simple exemple:
import UIKit
class Btn:UIButton {
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder);
self.backgroundColor=UIColor.cyanColor();
self.layer.borderWidth=1;
}
override func awakeFromNib() {
self.backgroundColor=UIColor.brownColor(); // it was changed to brown
self.layer.borderWidth=3; // it changed to 3
self.layer.cornerRadius=20;// it doesn't changed to 20
// it's stay 5 from drawRect func (down here) whyyy???
}
override func drawRect(rect: CGRect) {
self.backgroundColor=UIColor.greenColor();
self.layer.cornerRadius=5;
}
}
Je ne pense pas avoir compris la question. 'drawRect' est appelé après' awakeFromNib', donc si vous le placez dans les deux alors le 'drawRect' va juste écraser celui dans' awakeFromNib' – dan
alors pourquoi la couleur de fond que je reçois est marron, selon votre réponse le drawRect écraser celui dans awakeFromNib alors pourquoi je ne vois pas greenColor ?? –