我创建了一个从视图对象继承的类(UIButton) 我不明白为什么当我试图改变我通过init或awakeFromNib func成功添加drawRect func的backgroundColor时, 但当我试图更改我添加的图层的属性时 在drawRect func(如self.layer.cornerRadius)中,它不会被init或awakeFromNib函数更改。
两个问题: 1.有人可以向我解释幕后发生了什么吗? 2.如何更改drawRect func中添加的图层属性?
抱歉我的英语不稳定 我希望它足够清楚:))
以下是我的简单示例代码:
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;
}
}
答案 0 :(得分:1)
如何更改drawRect func中添加的图层属性?
唐'吨。不要更改drawRect
中任何图层的任何属性,也不要在drawRect
中添加任何图层。您在drawRect
中应该做的唯一事情是绘制视图的内容。这段代码:
override func drawRect(rect: CGRect) {
self.backgroundColor=UIColor.greenColor();
self.layer.cornerRadius=5;
}
......是错的。删除它。