2012-06-25 15 views
17

Quiero aplicar dos tipos de frontera en un UIImageView:frontera ubicado alrededor de UIImageView

  1. Una de ellas es la frontera en el layer del UIImageView.
  2. El segundo es el borde alrededor del layer del UIImageView.

¿Cómo puedo hacer esto?

Respuesta

32

Trate

#define kBorderWidth 3.0 
#define kCornerRadius 8.0 
CALayer *borderLayer = [CALayer layer]; 
CGRect borderFrame = CGRectMake(0, 0, (imageView.frame.size.width), (imageView.frame.size.height)); 
[borderLayer setBackgroundColor:[[UIColor clearColor] CGColor]]; 
[borderLayer setFrame:borderFrame]; 
[borderLayer setCornerRadius:kCornerRadius]; 
[borderLayer setBorderWidth:kBorderWidth]; 
[borderLayer setBorderColor:[[UIColor redColor] CGColor]]; 
[imageView.layer addSublayer:borderLayer]; 

Y no se olvide de importar QuartzCore/QuartzCore.h

En este ejemplo se dibujará un huésped en la capa, pero cambiar su marco ligeramente para hacer que el borde alrededor de la capa .

+0

Gracias por su respuesta. Intenté este código pero creo un borde dentro de UIImageView pero quiero establecer el borde desde fuera de UIImageView. – Girish

+5

Sólo cambia el marco para cualquier cantidad 'fuera' te gusta: CGRect borderFrame = CGRectMake (-1.0, -1.0 , imageView.frame.size.width + 2.0, imageView.frame.size.height + 2.0) ; –

+1

Asegúrese de establecer clipsToBounds en falso, si está tratando de poner el borde fuera de imageView – scott

8

Otra forma

Debe importar

#import <QuartzCore/QuartzCore.h> 

A continuación, agregue código para su UIImageView

imgView.clipsToBounds = YES; 
imgView.layer.cornerRadius = 8.0; 
imgView.layer.borderWidth = 2.0; 
imgView.layer.borderColor = [UIColor greenColor].CGColor; 
+0

Esto no funciona. – scott

+0

Eso crea solo una capa de borde, el OP pide dos. – daisy

+0

simple y elegante. la solución perfecta – mattyU

2

Otra forma es añadir otra capa que va un poco fuera de la capa de la UIImageView como ese:

CALayer * externalBorder = [CALayer layer]; 
externalBorder.frame = CGRectMake(-1, -1, myView.frame.size.width+2, myView.frame.size.height+2); 
externalBorder.borderColor = [UIColor blackColor].CGColor; 
externalBorder.borderWidth = 1.0; 

[myView.layer addSublayer:externalBorder]; 
myView.layer.masksToBounds = NO;