2012-06-25 16 views
17

voglio applicare due tipi di frontiera su un UIImageView:Set bordo intorno UIImageView

  1. Uno è il confine sul layer del UIImageView.
  2. Il secondo è il bordo intorno allo layer dello UIImageView.

Come posso fare questo?

risposta

32

Prova

#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]; 

E non dimenticate di importare QuartzCore/QuartzCore.h

Questo esempio tracciare un confine sul livello, ma cambiare è cornice un po 'per fare il bordo attorno allo strato .

+0

Grazie per la tua risposta. Ho provato questo codice, ma crea il bordo all'interno di UIImageView ma voglio impostare il bordo dall'esterno di UIImageView. – Girish

+5

Basta cambiare il telaio per qualsiasi importo 'fuori' che ti piace: CGRect borderFrame = CGRectMake (-1,0, -1,0 , imageView.frame.size.width + 2.0, imageView.frame.size.height + 2.0) ; –

+1

Assicurati di impostare ClipToBounds su false, se stai provando a mettere il bordo all'esterno dell'immagine imageView – scott

8

Un altro modo

È necessario importare

#import <QuartzCore/QuartzCore.h> 

Poi aggiungere il codice per il vostro UIImageView

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

Questo non funziona. – scott

+0

Questo crea solo un livello di bordo, l'OP ne richiede due. – daisy

+0

semplice ed elegante. la soluzione perfetta – mattyU

2

Un altro modo è quello di aggiungere un altro strato che va un po 'al di fuori dello strato del UIImageView così:

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; 
Problemi correlati