Ok, il y a déjà une réponse acceptée mais je pense qu'il y a une meilleure façon de le faire, vous devez juste avoir un nouveau calque un peu plus grand que votre vue et ne pas le masquer aux limites du calque de la vue (ce qui est en fait le comportement par défaut). Voici l'exemple de code :
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;
Bien sûr, c'est si vous voulez que votre bordure soit de 1 unité de large, si vous en voulez plus, vous adaptez l'option borderWidth
et le cadre de la couche en conséquence. C'est mieux que d'utiliser une deuxième vue un peu plus grande comme une CALayer
est plus léger qu'un UIView
et vous n'avez pas besoin de modifier le cadre de la myView
ce qui est une bonne chose, par exemple si myView
est un UIImageView
N.B : Pour moi, le résultat n'était pas parfait sur le simulateur (la couche n'était pas exactement à la bonne position, de sorte que la couche était parfois plus épaisse d'un côté) mais correspondait exactement à ce qui est demandé sur le dispositif réel.
EDIT
En fait, le problème dont je parle dans le N.B. c'est juste parce que j'avais réduit l'écran du simulateur, en taille normale il n'y a absolument aucun problème.
J'espère que cela vous aidera