UILabel的全球造型

时间:2018-03-27 10:14:58

标签: uilabel interface-builder extension-methods

我试图对我的应用程序外观进行全局控制,其中包含几个带标签的UITableView。

由于我不想通过所有的表格视图和单元格和标签访问IB,我尝试执行以下操作:

extension UILabel {
    static let cellSubject:UILabel = {
        var thisLabel = UILabel()
        thisLabel.font =  UIFont(name: "Avenir Black", size: 2.0)
        thisLabel.textColor = UIColor.myGreen
        return thisLabel
    }()

}

然后,在

cellForRowAt indexPath:

我做:

cell.subject = UILabel.cellSubject
cell.subject.text = "Whatever"
...

我希望看到的是一个绿色小的标签

我看到的是在Interface Builder中定义的标签。

这就是我想要的本身不可能的,或者我的语法有问题吗?

2 个答案:

答案 0 :(得分:0)

所以,我最后只是继承UILabel,并在Interface Builder中分配该子类:

import UIKit
let fontName = "Avenir Black"

    class cellSubject: UILabel {

        required init(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)!
            self.commonInit()
        }

        override init(frame: CGRect) {
            super.init(frame: frame)
            self.commonInit()
        }
        func commonInit(){
            self.font =  UIFont(name: fontName, size: 17.0)
            self.textColor = UIColor.white

        }

    }

答案 1 :(得分:0)

exension UILabel{
  func makeGlobal(){
    self.font =  UIFont(name: "Avenir Black", size: 2.0)
    self.color = UIColor.myGreen
  }
}

cell.subject.makeGlobal()

这将是一个更好的方法。或者您可以简单地子类化一个单元格并在那里添加您的属性并使您的标签成为它的一个实例。