如何围绕 UILabel 绘制边界?

UILabel 有办法在自己周围画一条边界吗?这对我调试文本位置和查看位置以及标签实际有多大很有用。

132110 次浏览

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

#import <QuartzCore/QuartzCore.h>


myLabel.layer.borderColor = [UIColor greenColor].CGColor
myLabel.layer.borderWidth = 3.0

迅捷5:

myLabel.layer.borderColor = UIColor.darkGray.cgColor
myLabel.layer.borderWidth = 3.0

您可以使用这个回购: GSBorderLabel

很简单:

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

它实际上取决于有多少边框使用在您的视图,有时,只需添加一个 UIVIEW 的大小有点大,以创建边框。该方法比生成视图更快

快速版:

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

对于斯威夫特3:

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

下面是一些你可以用 UILabel和它的边界来做的事情。

enter image description here

下面是这些标签的代码:

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

参见

使用 NSAttributedString 字符串作为标签 AttributedText 可能是最好的选择

Swift 3/4 with@IBDesignable


虽然几乎所有上述解决方案工作良好,但我会建议为此 @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
}
}
}

在 Swift 4中,UILabel 属性 borderColor,borderWidth,corderRadius

@IBOutlet weak var anyLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
anyLabel.layer.borderColor = UIColor.black.cgColor
anyLabel.layer.borderWidth = 2
anyLabel.layer.cornerRadius = 5
anyLabel.layer.masksToBounds = true
}

Swift 4的解决方案:

Your Label.layer.borderColor = UIColor.green.cgColor