Vi en el inspector que puedo cambiar el color de fondo, pero también me gustaría cambiar el color y el grosor del borde, ¿es esto posible?
275
Vi en el inspector que puedo cambiar el color de fondo, pero también me gustaría cambiar el color y el grosor del borde, ¿es esto posible?
Respuestas:
Debe usar la capa de vista para establecer la propiedad del borde. p.ej:
También debe vincular con QuartzCore.framework para acceder a esta funcionalidad.
fuente
__bridge CGColorRef
. Esto no funciona. Tiene que ser[UIColor blackColor].CGColor
como se menciona en la respuesta.#import <QuartzCore/QuartzCore.h>
Ya no es necesario.Actualización de Xcode 6
Desde la versión más nueva de Xcode hay una mejor solución para esto:
Con
@IBInspectable
usted puede establecer los atributos directamente desde dentro de laAttributes Inspector
.Esto establece el
User Defined Runtime Attributes
para usted:Hay dos enfoques para configurar esto:
Opción 1 (con actualización en vivo en Storyboard)
MyCustomView
.UIView
.@IBDesignable
(esto hace que la actualización Ver sea activa). *@IBInspectable
MyCustomView
``
*
@IBDesignable
solo funciona cuando se establece al comienzo declass MyCustomView
Opción 2 (no funciona desde Swift 1.2, ver comentarios)
Extienda su clase UIView:
De esta manera, su Vista predeterminada siempre tiene esos campos editables adicionales
Attributes Inspector
. Otra ventaja es que no tiene que cambiar la claseMycustomView
cada vez. Sin embargo, un inconveniente de esto es que solo verá sus cambios cuando ejecute su aplicación.fuente
También puede crear un borde con el color de su deseo.
* r, g, b son los valores entre 0 y 255.
fuente
r
,g
yb
probablemente debería ser flotadores; los divisores también deben ser flotadores:r / 255.0
.Agregue los siguientes @IBInspectables en la extensión UIView
Y luego debería poder establecer los atributos borderColor y borderWidth directamente desde el inspector de atributos. Ver imagen adjunta
Inspector de atributos
fuente
Cuando uso la solución CALayer de Vladimir, y en la parte superior de la vista, tengo una animación, como un UINavigationController modal que se descarta, veo que ocurren muchos problemas técnicos y problemas de rendimiento de dibujo.
Entonces, otra forma de lograr esto, pero sin los problemas técnicos y la pérdida de rendimiento, es crear una UIView personalizada e implementar el
drawRect
mensaje de esta manera:fuente
setNeedsDisplay
a la vista. Esto obligará a volver a dibujar la UIView e implícitamente volverá a llamardrawRect
. No probado, aunque ...fuente
Prueba este código:
fuente
No sugeriría anular el drawRect debido a que causa un impacto en el rendimiento.
En cambio, modificaría las propiedades de la clase como se muestra a continuación (en su uiview personalizado):
No vi ningún problema técnico al tomar el enfoque anterior, no estoy seguro de por qué poner el initWithFrame detiene estos ;-)
fuente
Quería agregar esto a la respuesta de @marczking ( Opción 1 ) como un comentario, pero mi bajo estado en StackOverflow lo impide.
Hice un puerto de la respuesta de @marczking al Objetivo C. Funciona de maravilla, ¡gracias @marczking!
UIView + Border.h:
UIView + Border.m:
fuente
@IBInspectable me funciona en iOS 9, Swift 2.0
fuente
Si no desea editar la capa de una UIView, siempre puede incrustar la vista dentro de otra vista. La vista principal tendría su color de fondo establecido en el color del borde. También sería un poco más grande, dependiendo de qué tan ancho desea que sea el borde.
Por supuesto, esto solo funciona si su vista no es transparente y solo desea un color de borde único. El OP quería el borde en la vista misma, pero esta puede ser una alternativa viable.
fuente
Si desea agregar diferentes bordes en diferentes lados, puede agregar una subvista con el estilo específico, es una forma fácil de encontrar.
fuente
color del borde del elemento en swift 4.2:
fuente