我創建了一個類,從視圖對象(UIButton的) 繼承我不明白,爲什麼當我試圖改變,我在drawRect中FUNC由init或awakeFromNib FUNC它成功添加的backgroundColor, 但時我試圖改變我在drawRect func中添加 的屬性(如self.layer.cornerRadius),它不會被init或awakeFromNib func改變。IOS - 在drawRect中func圖層的屬性不能改變?
兩個問題: 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;
}
}
我不認爲我理解這個問題。在'awakeFromNib'之後調用'drawRect',所以如果你在兩者中都設置它,那麼'drawRect'就會覆蓋'awakeFromNib' – dan
中的那個,那麼爲什麼我得到的backgroundColor是棕色的,根據你的回答drawRect覆蓋awakeFromNib中的一個爲什麼我沒有看到greenColor? –