Ios Swift UILabel子类自动调用枚举开关函数
我一直在创建一个名为RPLabel的UILabel类,它应该可以缩短我所有的编程设置标签列表。这是类代码:Ios Swift UILabel子类自动调用枚举开关函数,ios,swift,class,enums,uilabel,Ios,Swift,Class,Enums,Uilabel,我一直在创建一个名为RPLabel的UILabel类,它应该可以缩短我所有的编程设置标签列表。这是类代码: class RPLabel: UILabel { // moneyTitle.frame = CGRect(x: 50, y: -50, width:XX, height: 35) // required init(coder aDecoder: NSCoder) { super.init(coder: aDecoder)! se
class RPLabel: UILabel {
// moneyTitle.frame = CGRect(x: 50, y: -50, width:XX, height: 35) //
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
self.setup()
self.testForLabelType()
}
enum labelTypeEnumeration {
case title, subtitle
}
var labelType = labelTypeEnumeration.title
override init(frame: CGRect){
super.init(frame: frame)
self.setup()
}
override func awakeFromNib() {
super.awakeFromNib()
self.setup()
}
func setup(){
self.text = self.text
self.textColor = self.textColor
self.font = self.font
self.layer.display()
}
func testForLabelType() {
switch labelType {
case .title:
setupTitle()
print("setupTitle")
case .subtitle:
setupSubtitle()
print("setupSubtitle")
}
}
func setupTitle(){
self.font = UIFont.boldSystemFont(ofSize: 12)
self.textColor = UIColor.secondaryColor()
self.textAlignment = .left
}
func setupSubtitle(){
self.font = UIFont.boldSystemFont(ofSize: 18)
self.textColor = UIColor.rgb(red: 200, green: 200, blue: 200)
self.textAlignment = .left
}
}
要制作标签,我使用以下代码:
var moneyTitle = RPLabel()
moneyTitle.labelType = .title
moneyTitle.testForLabelType()
moneyTitle.text = "MONEY"
moneyTitle.frame = CGRect(x: 50, y: -50, width:XX, height: 35)
我遇到的问题是,我希望将labelType设置为.title,而不必编写moneyTitle.testForLabelType()。换句话说,我希望该函数在类中自动运行。我不希望在init中插入参数,因此请避免告诉我这样做,谢谢 您可以使用didSet:
存储新值后立即调用didSet
如果您的问题得到成功回答,请不要忘记接受答案=)。
var labelType = labelTypeEnumeration.title {
didSet {
testForLabelType()
}
}