UILabel subclass initialize with custom color

后端 未结 2 1467
时光取名叫无心
时光取名叫无心 2021-02-04 13:37

My goal is to set the textColor of my custom UILabel subclass in my view controller. I have a UILabel subclass named CircleLabel

相关标签:
2条回答
  • 2021-02-04 13:55

    1. Custom Label In swift

        class CustomLabel: UILabel {
    
        @IBInspectable var topInset: CGFloat = 5.0
        @IBInspectable var bottomInset: CGFloat = 5.0
        @IBInspectable var leftInset: CGFloat = 7.0
        @IBInspectable var rightInset: CGFloat = 7.0
    
        override func drawText(in rect: CGRect) {
            let insets = UIEdgeInsets(top: topInset, left: leftInset, bottom: bottomInset, right: rightInset)
            super.drawText(in: rect.inset(by: insets))
        }
    
        override var intrinsicContentSize: CGSize {
            let size = super.intrinsicContentSize
            return CGSize(width: size.width + leftInset + rightInset,
                          height: size.height + topInset + bottomInset)
        }
    }
    
    0 讨论(0)
  • 2021-02-04 14:14

    Screenshot

    You do not need to override drawRect in your case,just create the class like this

    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.
        }
    
    }
    
    0 讨论(0)
提交回复
热议问题