我的目标是设定textColor
我的习惯UILabel
我的视图控制器中的子类。我有一个UILabel
子类名为CircleLabel
。以下是它的基础知识:
class CircleLabel: UILabel {
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)!
}
override init(frame: CGRect) {
super.init(frame: frame)
}
override func drawRect(rect: CGRect) {
self.layer.cornerRadius = self.bounds.width/2
self.clipsToBounds = true
super.drawRect(rect)
}
override func drawTextInRect(rect: CGRect) {
self.textColor = UIColor.whiteColor()
super.drawTextInRect(rect)
}
func setProperties(borderWidth: Float, borderColor: UIColor) {
self.layer.borderWidth = CGFloat(borderWidth)
self.layer.borderColor = borderColor.CGColor
}
}
正如您所看到的,我实例化的每个 CircleLabel 都默认为 UIColor.whiteColor() 的 textColor 属性,该属性可以正常工作。在我的视图控制器的 viewDidLoad 中,我想将 CircleLabel 设置为动态textColor
财产。所以像这样:
class myViewController: UIViewController {
@IBOutlet weak var myCustomLabel: CircleLabel!
override func viewDidLoad() {
super.viewDidLoad()
myCustomLabel.textColor = UIColor.blackColor()
}
那行不通,因为textColor
被设置在drawRect
的方法UILabel
子类。我可以在我的项目中实施什么CircleLabel
子类(通过像我的 setProperties 辅助方法或其他方式这样的辅助方法),这将允许我设置textColor
我的视图控制器中的自定义标签?
截屏
您不需要覆盖drawRect
在你的情况下,只需创建这样的类
class CircleLabel: 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.layer.cornerRadius = self.bounds.width/2
self.clipsToBounds = true
self.textColor = UIColor.whiteColor()
self.setProperties(1.0, borderColor:UIColor.blackColor())
}
func setProperties(borderWidth: Float, borderColor: UIColor) {
self.layer.borderWidth = CGFloat(borderWidth)
self.layer.borderColor = borderColor.CGColor
}
}
Then
class ViewController: UIViewController {
@IBOutlet weak var myCustomLabel: CircleLabel!
override func viewDidLoad() {
super.viewDidLoad()
myCustomLabel.textColor = UIColor.blackColor()
// Do any additional setup after loading the view, typically from a nib.
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)