IOS - 在drawRect func图层属性中无法更改?

时间:2016-06-21 18:32:45

标签: ios swift layer drawrect

我创建了一个从视图对象继承的类(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;
    }
}

1 个答案:

答案 0 :(得分:1)

  

如何更改drawRect func中添加的图层属性?

唐'吨。不要更改drawRect中任何图层的任何属性,也不要在drawRect中添加任何图层。您在drawRect中应该做的唯一事情是绘制视图的内容。这段代码:

override func drawRect(rect: CGRect) {
    self.backgroundColor=UIColor.greenColor();
    self.layer.cornerRadius=5;
}

......是错的。删除它。