如何在UILabel上绘制边框?

有没有办法让UILabel在自己周围绘制边框? 这对于debugging文本位置以及查看放置位置以及标签的实际大小非常有用。

您可以通过其底层CALayer属性设置标签的边框:

#import <QuartzCore/QuartzCore.h> myLabel.layer.borderColor = [UIColor greenColor].CGColor; myLabel.layer.borderWidth = 3.0; 

这里有一些你可以用UILabel和边界做的事情。

在这里输入图像说明

以下是这些标签的代码:

 import UIKit class ViewController: UIViewController { @IBOutlet weak var label1: UILabel! @IBOutlet weak var label2: UILabel! @IBOutlet weak var label3: UILabel! @IBOutlet weak var label4: UILabel! @IBOutlet weak var label5: UILabel! @IBOutlet weak var label6: UILabel! override func viewDidLoad() { super.viewDidLoad() // label 1 label1.layer.borderWidth = 1.0 // label 2 label2.layer.borderWidth = 5.0 label2.layer.borderColor = UIColor.blue.cgColor // label 3 label3.layer.borderWidth = 2.0 label3.layer.cornerRadius = 8 // label 4 label4.backgroundColor = UIColor.cyan // label 5 label5.backgroundColor = UIColor.red label5.layer.cornerRadius = 8 label5.layer.masksToBounds = true // label 6 label6.layer.borderWidth = 2.0 label6.layer.cornerRadius = 8 label6.backgroundColor = UIColor.yellow label6.layer.masksToBounds = true } } 

请注意,在Swift中不需要导入QuartzCore

也可以看看

  • 边框,圆angular和CALayer上的阴影
  • masksToBounds解释
  • 使用具有贝塞尔path的边框作为图层
  • 如何在CALayer上进行转换

Swift版本:

 myLabel.layer.borderWidth = 0.5 myLabel.layer.borderColor = UIColor.greenColor().CGColor 

对于Swift 3:

 myLabel.layer.borderWidth = 0.5 myLabel.layer.borderColor = UIColor.green.cgColor 

你可以使用这个回购: GSBorderLabel

这很简单:

 GSBorderLabel *myLabel = [[GSBorderLabel alloc] initWithTextColor:aColor andBorderColor:anotherColor andBorderWidth:2]; 

这实际上取决于您的视图中有多less个寄宿生使用,有时候,只需添加一个大小稍大的UIVIEW来创build边界。 该方法比产生视图更快

为标签使用NSAttributedStringstring属性文本可能是您最好的select。 看看这个例子。

Swift 3/4与@IBDesignable


虽然几乎所有的上述解决scheme工作正常,但我会build议@IBDesignable自定义类为此。

 @IBDesignable class CustomLabel: UILabel { /* // Only override draw() if you perform custom drawing. // An empty implementation adversely affects performance during animation. override func draw(_ rect: CGRect) { // Drawing code } */ @IBInspectable var borderColor: UIColor = UIColor.white { didSet { layer.borderColor = borderColor.cgColor } } @IBInspectable var borderWidth: CGFloat = 2.0 { didSet { layer.borderWidth = borderWidth } } @IBInspectable var cornerRadius: CGFloat = 0.0 { didSet { layer.cornerRadius = cornerRadius } } }