Есть ли способ для UILabel нарисовать границу вокруг себя? Это полезно для меня, чтобы отладить размещение текста и увидеть размещение и размер метки на самом деле.
Как нарисовать границу вокруг UILabel?
Ответы (9)
Вы можете установить границу метки через соответствующее свойство CALayer:
#import <QuartzCore/QuartzCore.h>
myLabel.layer.borderColor = [UIColor greenColor].CGColor
myLabel.layer.borderWidth = 3.0
Swift 5:
myLabel.layer.borderColor = UIColor.darkGray.cgColor
myLabel.layer.borderWidth = 3.0
#import <QuartzCore/QuartzCore.h>
- person Stefan Arentz; 22.02.2010
myLabel.layer.borderColor = UIColor.greenColor().CGColor
- person Roshambo; 22.01.2015
Вот несколько вещей, которые вы можете сделать с 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.
См. также
- Граница, закругленные углы и тень на
CALayer - Объяснение
masksToBounds - Использование границы с путем Безье для слоя
- Как выполнять преобразования на
CALayer
Быстрая версия:
myLabel.layer.borderWidth = 0.5
myLabel.layer.borderColor = UIColor.greenColor().CGColor
Для Swift 3:
myLabel.layer.borderWidth = 0.5
myLabel.layer.borderColor = UIColor.green.cgColor
myLabel.layer.borderColor = UIColor.blackColor().CGColor!
- person Shruti; 24.03.2015
Swift 3/4 с @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
}
}
}
Вы можете использовать это репо: GSBorderLabel
Это довольно просто:
GSBorderLabel *myLabel = [[GSBorderLabel alloc] initWithTextColor:aColor
andBorderColor:anotherColor
andBorderWidth:2];
Свойства UILabel borderColor, borderWidth, cornerRadius в Swift 4
@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:
yourLabel.layer.borderColor = UIColor.green.cgColor
это действительно зависит от того, сколько границ используется в вашем представлении, иногда просто добавьте UIVIEW, размер которого немного больше, чтобы создать границу. метод быстрее, чем создание представления
Возможно, лучше всего использовать строку NSAttributedString для ваших меток attributedText. Посмотрите этот пример.
