Ok, ya hay una respuesta aceptada, pero creo que hay una mejor manera de hacerlo, solo tienes que tener una nueva capa un poco más grande que tu vista y no enmascararla a los límites de la capa de la vista (que en realidad es el comportamiento predeterminado). Aquí está el código de ejemplo :
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;
Por supuesto, esto es si desea que su borde sea 1 unidad más grande, si desea más, adapte el borderWidth
y el marco de la capa en consecuencia. Esto es mejor que usar una segunda vista un poco más grande ya que a CALayer
es más ligero que a UIView
y no tienes que modificar el marco de myView
, lo cual es bueno, por ejemplo, si myView
es unUIImageView
NB: Para mí, el resultado no fue perfecto en el simulador (la capa no estaba exactamente en la posición correcta, por lo que la capa era más gruesa en un lado a veces) pero fue exactamente lo que se pidió en un dispositivo real.
EDITAR
En realidad el problema del que hablo en el NB fue solo porque había reducido la pantalla del simulador, en tamaño normal no hay absolutamente ningún problema
Espero eso ayude