208 votos

Cocoa Touch: Cómo Cambiar el UIView de la Frontera del Color Y el Grosor?

Vi en el inspector que puedo cambiar el color de fondo, pero también me gustaría cambiar el color del borde y el grosor es esto posible?

Gracias

475voto

Vladimir Puntos 110327

Usted necesidad de utilizar la vista de la capa para establecer la frontera de la propiedad. por ejemplo:

#import <QuartzCore/QuartzCore.h>
...
view.layer.borderColor = [UIColor redColor].CGColor;
view.layer.borderWidth = 3.0f;

También es necesario vínculo con QuartzCore.framework para acceder a esta funcionalidad.

13voto

rohan-patel Puntos 4236

También puede crear frontera con el color de tu deseo..

view.layer.borderColor = [UIColor colorWithRed:r/255 green:g/255 blue:b/255 alpha:1.0].CGColor;

*r,g,b son los valores entre 0 y 255..Para saber el valor RGB del color se puede establecer aquí...: -)

8voto

Nicolae Surdu Puntos 2045

Cuando yo uso el de Vladimir CALayer solución, y en la parte superior de la vista tengo una animación, como un referente UINavigationController despedir, veo un montón de problemas técnicos sucediendo y tener el dibujo de los problemas de rendimiento.

Así, otra manera de lograr esto, pero sin las interferencias y pérdidas de rendimiento, es hacer un custom UIView y aplicar el drawRect mensaje así:

- (void)drawRect:(CGRect)rect
{
    CGContextRef contextRef = UIGraphicsGetCurrentContext();
    CGContextSetLineWidth(contextRef, 1);
    CGContextSetRGBStrokeColor(contextRef, 255.0, 255.0, 255.0, 1.0);
    CGContextStrokeRect(contextRef, rect);    
}

3voto

DEzra Puntos 930

Yo no sugiero reemplazar el drawRect debido a que causan un impacto en el rendimiento.

En su lugar, me gustaría modificar las propiedades de la clase como la siguiente (en su encargo de uiview):

  - (id)initWithFrame:(CGRect)frame {
    self = [super initWithFrame:frame];
    if (self) {
      self.layer.borderWidth = 2.f;
      self.layer.borderColor = [UIColor redColor].CGColor;
    }
  return self;

No veo fallos cuando se toma por encima de enfoque - no sé por qué poner en la initWithFrame paradas de estos ;-)

1voto

Matt Becker Puntos 811

Si usted no desea modificar la capa de un UIView, siempre se puede incrustar la vista dentro de otro punto de vista. Los padres punto de vista de su fondo de color establece el color del borde. También sería un poco más grande, dependiendo de cómo todo el que desee de la frontera.

Por supuesto, esto sólo funciona si su vista no es transparente y sólo desea un solo color de borde. El OP quería la frontera en la propia vista, pero esta puede ser una alternativa viable.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X