¿Existe una forma integrada de crear UILabels con esquinas redondeadas? Si la respuesta es no, ¿cómo se podría crear un objeto así?
fuente
¿Existe una forma integrada de crear UILabels con esquinas redondeadas? Si la respuesta es no, ¿cómo se podría crear un objeto así?
iPhone OS 3.0 y posterior admite la cornerRadius
propiedad en la CALayer
clase. Cada vista tiene una CALayer
instancia que puede manipular. Esto significa que puede obtener esquinas redondeadas en una línea:
view.layer.cornerRadius = 8;
Necesitará #import <QuartzCore/QuartzCore.h>
y vincular al marco de QuartzCore para obtener acceso a los encabezados y propiedades de CALayer.
Una forma de hacerlo, que utilicé recientemente, es crear una subclase de UIView que simplemente dibuje un rectángulo redondeado, y luego hacer UILabel o, en mi caso, UITextView, una subvista dentro de él. Específicamente:
UIView
subclase y asígnele un nombre RoundRectView
.RoundRectView
el drawRect:
método, dibuje una ruta alrededor de los límites de la vista utilizando llamadas de Core Graphics como CGContextAddLineToPoint () para los bordes y CGContextAddArcToPoint () para las esquinas redondeadas.UILabel
instancia y conviértala en una subvista de RoundRectView.label.frame = CGRectInset(roundRectView.bounds, 8, 8);
)Puede colocar RoundRectView en una vista usando Interface Builder si crea una UIView genérica y luego cambia su clase usando el inspector. No verá el rectángulo hasta que compile y ejecute su aplicación, pero al menos podrá colocar la subvista y conectarla a salidas o acciones si es necesario.
Para dispositivos con iOS 7.1 o posterior, debe agregar:
fuente
Para Swift IOS8 en adelante basado en la respuesta OScarsWyck:
fuente
YES
atrue
.UILabel
llamado:myLabel
.#import <QuartzCore/QuartzCore.h>
en tu
viewDidLoad
escribe esta línea:self.myLabel.layer.cornerRadius = 8;
Buena suerte
fuente
Puede hacer un borde redondeado con ancho de borde de cualquier control de esta manera: -
Simplemente reemplace
lblName
con suUILabel
.Nota: - No olvides importar
<QuartzCore/QuartzCore.h>
fuente
Hice una
UILabel
subclase rápida para lograr este efecto. Además, configuro automáticamente el color del texto en blanco o negro para obtener el máximo contraste.Resultado
Postes SO usados:
Patio de recreo
Solo pegue esto en un iOS Playground:
fuente
Otro método es colocar un png detrás de UILabel. Tengo vistas con varias etiquetas que superponen un solo fondo png que tiene todas las ilustraciones para las etiquetas individuales.
fuente
xCode 7.3.1 iOS 9.3.2
fuente
Si quieres esquina redondeada de la interfaz de usuario como objetos (
UILabel
,UIView
,UIButton
,UIImageView
) por el guión gráfico a continuación, establecerclip to bounds
la verdadera y establecerUser Defined Runtime Attributes
ruta de la clave comolayer.cornerRadius
, escriba = Número y valor = 9 (como su requisito)fuente
fuente
Swift 3
Si desea una etiqueta redondeada con color de fondo, además de la mayoría de las otras respuestas, también debe establecer
layer
el color de fondo. No funciona al configurar elview
color de fondo.Si está utilizando el diseño automático, desea un poco de relleno alrededor de la etiqueta y no desea establecer el tamaño de la etiqueta manualmente, puede crear la subclase UILabel y anular la
intrinsincContentSize
propiedad:Para combinar los dos, también deberá configurarlo
label.textAlignment = center
; de lo contrario, el texto quedaría alineado.fuente
En Monotouch / Xamarin.iOS resolví el mismo problema como este:
fuente
Funciona perfecto en Swift 2.0
fuente
¿Intentó usar el
UIButton
generador de interfaces (que tiene esquinas redondeadas) y experimentó con la configuración para que parezca una etiqueta. si todo lo que quieres es mostrar texto estático dentro.fuente
"cornerRadius" es la propiedad clave para establecer los bordes redondeados, donde si está utilizando el mismo estilo para todas las etiquetas en su aplicación, recomendaría un método de extensión.
Código:
Salida:
¿Por qué método de extensión?
Cree un archivo Swift y agregue el siguiente código, que tiene el método Extention a la clase "UILabel", donde este método está definido por el usuario pero funcionará para toda la etiqueta de su aplicación y ayudará a mantener la coherencia y limpiar el código, si usted cambiar cualquier estilo en el futuro solo requiere en el método de extensión.
fuente
Dependiendo de lo que esté haciendo exactamente, podría hacer una imagen y establecerla como fondo programáticamente.
fuente