Ok, es gibt bereits eine akzeptierte Antwort, aber ich denke, es gibt einen besseren Weg, dies zu tun. Sie müssen nur eine neue Ebene haben, die etwas größer als Ihre Ansicht ist, und sie nicht bis an die Grenzen der Ebene der Ansicht maskieren (was tatsächlich der Fall ist) das Standardverhalten). Hier ist der Beispielcode:
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;
Dies ist natürlich der Fall, wenn Sie möchten, dass Ihr Rand 1 Einheit groß ist. Wenn Sie mehr möchten, passen Sie den borderWidth
und den Rahmen der Ebene entsprechend an. Dies ist besser als die Verwendung einer zweiten Ansicht, die etwas größer ist, da a CALayer
leichter als a ist UIView
und Sie den Rahmen von nicht ändern müssen. Dies ist myView
beispielsweise dann gut, wenn myView
es sich um a handeltUIImageView
NB: Für mich war das Ergebnis im Simulator nicht perfekt (die Schicht war nicht genau an der richtigen Position, so dass die Schicht manchmal auf einer Seite dicker war), aber genau das, was auf einem realen Gerät verlangt wird.
BEARBEITEN
Eigentlich war das Problem, über das ich in der NB spreche, nur, weil ich den Bildschirm des Simulators verkleinert hatte. Bei normaler Größe gibt es absolut kein Problem
Ich hoffe es hilft