【发布时间】:2016-06-21 18:32:45
【问题描述】:
我创建了一个从视图对象(UIButton)继承的类 我不明白为什么当我尝试通过 init 或 awakeFromNib func 更改我在 drawRect func 中添加的 backgroundColor 时,它会成功, 但是当我尝试更改我添加的图层的属性时 在 drawRect 函数(如 self.layer.cornerRadius)中,它不会因 init 或 awakeFromNib 函数而改变。
两个问题: 1.有人可以向我解释幕后发生了什么吗? 2. 如何更改在 drawRect 函数中添加的图层的属性?
对不起,我的英语不稳定 我希望它足够清楚:)
这是我的简单示例代码:
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;
}
}
【问题讨论】:
-
我不认为我理解这个问题。
drawRect在awakeFromNib之后被调用,所以如果你同时设置它,那么drawRect只会覆盖awakeFromNib中的那个 -
那么为什么我得到的背景颜色是棕色的,根据你的回答,drawRect 会覆盖 awakeFromNib 中的那个,所以为什么我没有看到 greenColor??