Ok, jest już zaakceptowana odpowiedź, ale myślę, że jest lepszy sposób, aby to zrobić, wystarczy mieć nową warstwę nieco większą niż twój widok i nie maskować jej do granic warstwy widoku (która w rzeczywistości jest zachowanie domyślne). Oto przykładowy kod:
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;
Oczywiście dzieje się tak, jeśli chcesz, aby obramowanie było duże o 1 jednostkę, jeśli chcesz więcej, odpowiednio dostosuj borderWidth
ramkę warstwy i ramkę. Jest to lepsze niż użycie drugiego widoku nieco większego, ponieważ a CALayer
jest lżejsze niż a UIView
i nie musisz modyfikować ramki myView
, co jest dobre, na przykład, jeśli myView
jestUIImageView
NB: Dla mnie wynik nie był doskonały na symulatorze (warstwa nie była dokładnie we właściwej pozycji, więc czasami warstwa była grubsza z jednej strony), ale był dokładnie tym, o co proszono na prawdziwym urządzeniu.
EDYTOWAĆ
Właściwie problem o którym mówię w NB był tylko dlatego, że zmniejszyłem ekran symulatora, przy normalnym rozmiarze absolutnie nie ma problemu
Mam nadzieję, że to pomoże