UILabel子类使用自定义颜色初始化

亚伦

我的目标是在视图控制器中设置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 helper方法之类的帮助器方法或其他方式),以允许我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
    }
}

然后

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.
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从.sks文件使用自定义初始化程序进行子类化

如何使用自定义属性初始化 SparkContext?

使用@Namespace进行.matchedGeometryEffect的自定义初始化

使用自定义ChangeNotifier初始化riverpod Provider

初始化前使用的自定义变量“层”

自定义绑定初始化

重载>>运算符,并使用自定义类型的初始化列表初始化

以自定义tableviewcell以编程方式初始化UITableViewController的子类

如何在Swift中为UIViewController子类创建自定义初始化程序?

初始化后如何更新自定义类中的 UILabel 文本 (Swift 3)

使用自定义注释注释的bean的自定义初始化

自定义UIView是使用init(coder)初始化的,如何使用init(frame)对其进行初始化

自定义类型需要使用auto进行初始化的初始化程序吗?

使用自定义初始化程序的Swift枚举会丢失rawValue初始化程序

在 SKSpriteNode 自定义子类的初始化程序中设置物理主体不起作用

如何在keras自定义正则化程序中使用初始化的图层权重?

如何在 tensorflow 或 pytorch 中使用自定义权重初始化创建自定义神经网络

自定义视图未初始化

了解如何从IB初始化自定义UIView

作为 IBOutlet 连接的 UITableView 的自定义初始化

在Go中初始化自定义int类型

开始,初始化自定义类型

Swift:自定义ViewController初始化程序

最佳做法,如何初始化自定义类型?

初始化自定义类的数组

如何正确初始化自定义UITableviewCell?

文档片段中的自定义元素的初始化

如何初始化自定义类对象的数组?

如何从didSelectRowAtIndexPath初始化自定义UITableViewCell