Como desenhar borda em torno de um UILabel?

Existe uma maneira de a UILabel desenhar uma borda ao redor de si mesma? Isso é útil para eu depurar o posicionamento do texto e ver o posicionamento e o tamanho do marcador.

Você pode definir a borda da etiqueta por meio de sua propriedade CALayer subjacente:

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

Aqui estão algumas coisas que você pode fazer com a UILabel e suas fronteiras.

insira a descrição da imagem aqui

Aqui está o código para esses labels:

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

Note que no Swift não há necessidade de importar o QuartzCore .

Veja também

  • Borda, cantos arredondados e sombra em um CALayer
  • Explanation of masksToBounds
  • Usando uma borda com um caminho Bezier para uma camada
  • Como fazer transformações em um CALayer

Versão rápida:

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

Para o Swift 3:

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

Você pode usar este repo: GSBorderLabel

É bem simples:

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

Swift 3/4 com @IBDesignable


Embora quase todas as soluções acima funcionem bem, sugiro uma class personalizada @IBDesignable para isso.

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

Propriedades UILabel borderColor, borderWidth, cornerRadius no 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 } 

Solução para o Swift 4:

yourLabel.layer.borderColor = UIColor.green.cgColor;

isso realmente depende de quantos pensionistas usam em sua visão, às vezes, basta adicionar um UIVIEW cujo tamanho é um pouco maior para criar a borda. o método é mais rápido do que produzir uma visão

Usar uma string NSAttributedString para seus labels attribedText é provavelmente sua melhor aposta. Confira este exemplo.