2012-06-25 3 views
17

Je veux appliquer deux types de frontières sur un UIImageView:Set bordure autour UIImageView

  1. L'une est la frontière sur la layer du UIImageView.
  2. La deuxième est la bordure autour du layer du UIImageView.

Comment est-ce que je peux faire ceci?

Répondre

32

Essayez

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

Et ne pas oublier d'importer QuartzCore/QuartzCore.h

Cet exemple dessine une frontière sur la couche, mais changer sa structure légèrement pour rendre la frontière autour de la couche .

+0

Merci pour votre réponse.J'ai essayé ce code mais il crée la frontière à l'intérieur de l'UIImageView mais je veux définir la frontière de l'extérieur de UIImageView. – Girish

+5

il suffit de changer le cadre de quelque montant que 'en dehors' vous aimez: CGRect borderFrame = CGRectMake (-1,0, -1,0 , imageView.frame.size.width + 2.0, imageView.frame.size.height + 2.0) ; –

+1

Assurez-vous de définir des clipsToBounds sur false, si vous essayez de placer la bordure en dehors de l'image. – scott

8

Une autre façon

Vous devez importer

#import <QuartzCore/QuartzCore.h> 

Ensuite, ajoutez le code pour votre UIImageView

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

Cela ne fonctionne pas. – scott

+0

Cela crée seulement une couche de bordure, l'OP en demande deux. – daisy

+0

simple et élégant. la solution parfaite – mattyU

2

Une autre façon est d'ajouter une autre couche qui va un peu en dehors de la couche du UIImageView comme suit:

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;