iphone cocoa-touch uikit uilabel

iphone - Cómo dibujar un borde alrededor de un UILabel?



cocoa-touch uikit (8)

Aquí hay algunas cosas que puede hacer con UILabel y sus bordes.

Aquí está el código para esas etiquetas:

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

Tenga en cuenta que en Swift no es necesario importar QuartzCore .

Ver también

  • Borde, esquinas redondeadas y sombra en un CALayer
  • Explicación de masksToBounds
  • Usar un borde con una ruta Bezier para una capa
  • Cómo hacer transformaciones en un CALayer

¿Hay alguna manera de que UILabel dibuje un borde alrededor de sí mismo? Esto es útil para mí para depurar la ubicación del texto y para ver la ubicación y qué tan grande es realmente la etiqueta.


Propiedades de UILabel borderColor, borderWidth, cornerRadius en Swift 4

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


Puede establecer el borde de la etiqueta a través de su propiedad CALayer subyacente:

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


Puede usar este repositorio: GSBorderLabel

Es bastante simple:

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


Usar una cadena NSAttributedString para tus etiquetas. AttributeText es probablemente tu mejor opción. Mira este ejemplo.


Versión Swift:

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

Para Swift 3:

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


realmente depende de cuántos visitantes haya en su vista, a veces, simplemente agregue un UIVIEW cuyo tamaño sea un poco más grande para crear el borde. el método es más rápido que producir una vista


Swift 3/4 con @IBDesignable

Si bien casi todas las soluciones anteriores funcionan bien, sugeriría una clase personalizada @IBDesignable para esto.

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