Utilizo un botón personalizado en mi aplicación llamado "addButton" y quiero ponerle un borde blanco, ¿cómo puedo obtener el borde blanco alrededor de mi botón personalizado?
ios
objective-c
iPhone
fuente
fuente
Respuestas:
Puede establecer las propiedades del borde en el CALayer accediendo a la propiedad de capa del botón.
Primero, agrega Cuarzo
Establecer propiedades:
Ver:
https://developer.apple.com/documentation/quartzcore/calayer#//apple_ref/occ/cl/CALayer
El CALayer en el enlace anterior le permite establecer otras propiedades como el radio de la esquina, maskToBounds, etc.
Además, un buen artículo sobre diversión de botones:
https://web.archive.org/web/20161221132308/http://www.apptite.be/tutorial_custom_uibuttons.php
fuente
CGColor
Es muy simple, solo agregue el encabezado quartzCore en su archivo (para eso debe agregar el marco de cuarzo a su proyecto)
y luego haz esto
Puede cambiar los valores flotantes según sea necesario.
disfrutar.
Aquí hay un código moderno típico ...
Esa es una apariencia similar a los controles segmentados.
Solo haz:
fuente
Y en forma rápida, no necesita importar "QuartzCore / QuartzCore.h"
Solo usa:
o
fuente
El problema al configurar la capa
borderWidth
yborderColor
es que cuando tocas el botón, el borde no anima el efecto de resaltado.Por supuesto, puede observar los eventos del botón y cambiar el color del borde en consecuencia, pero eso se siente innecesario.
Otra opción es crear un UIImage estirable y configurarlo como la imagen de fondo del botón. Puede crear un conjunto de imágenes en sus imágenes.
Luego, lo configura como la imagen de fondo del botón:
Si su imagen es una imagen de plantilla, puede establecer el color de tinte del botón y el borde cambiará:
Ahora el borde se resaltará con el resto del botón cuando se toque.
fuente
borderWidth
.Para cambiar el radio, el color y el ancho del botón, configuro así:
fuente
Aquí hay una versión actualizada ( Swift 3.0.1 ) de la respuesta de Ben Packard .
El botón resultante se puede usar dentro de su StoryBoard gracias a las etiquetas
@IBDesignable
y@IBInspectable
.Además, las dos propiedades definidas le permiten establecer el ancho y el color del borde directamente en el generador de interfaces y obtener una vista previa del resultado.
Se podrían agregar otras propiedades de manera similar, para el radio del borde y el tiempo de desvanecimiento del resaltado.
fuente
prepareForInterfaceBuilder
solo recibe llamadas de IB, no cuando ejecuta la aplicación. Así que también configure los UIEdgeInsetsawakeFromNib
, luego se mostrará también cuando ejecute la aplicación.No necesita importar
QuartzCore.h
ahora. Tomando iOS 8 sdk y Xcode 6.1 en referencia.Uso directo:
fuente
Aquí hay una
UIButton
subclase que admite la animación de estado resaltada sin usar imágenes. También actualiza el color del borde cuando cambia el modo de tinte de la vista.Uso:
let button = BorderedButton(style: .System) //style .System is important
Apariencia:
fuente
Esto se puede lograr con varios métodos en Swift 3.0 Trabajó en la última versión agosto - 2017
Asigne directamente los valores de propiedad borderWidth para el botón UI:
Establecer título con valores de color predeterminados para el botón UI:
Establecer borde con color predeterminado para los valores de propiedad del borde para el botón de la interfaz de usuario:
Establezca el color definido por el usuario para los valores de propiedad del borde para el botón de la interfaz de usuario:
Use el método de extensión, de modo que el botón en toda la aplicación se verá coherente y no será necesario repetir varias líneas de código en todas partes.
Uso en código:
Salida del botón de método de extensión:
fuente
Actualización con Swift 3
fuente
**** En Swift 3 ****
Para crear borde
Hacer esquina redondeada
fuente
Swift 5
Para cambiar el color del borde, use
fuente