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