Ok, đã có một câu trả lời được chấp nhận nhưng tôi nghĩ có một cách tốt hơn để làm điều đó, bạn chỉ cần có một lớp mới lớn hơn một chút so với chế độ xem của bạn và không che nó vào giới hạn của lớp của chế độ xem (thực tế là hành vi mặc định). Đây là mã mẫu:
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;
Tất nhiên điều này là nếu bạn muốn đường viền của mình là 1 thống nhất lớn, nếu bạn muốn nhiều hơn, bạn điều chỉnh khung borderWidth
và khung của lớp cho phù hợp. Điều này tốt hơn là sử dụng chế độ xem thứ hai lớn hơn một chút vì a CALayer
nhẹ hơn a UIView
và bạn không phải sửa đổi khung của myView
, điều này rất tốt, chẳng hạn nếu myView
làUIImageView
NB: Đối với tôi, kết quả không hoàn hảo trên trình mô phỏng (lớp không chính xác ở đúng vị trí nên đôi khi lớp dày hơn ở một bên) nhưng chính xác là những gì được yêu cầu trên thiết bị thực.
BIÊN TẬP
Thực ra vấn đề mà tôi nói đến trong NB chỉ là do tôi đã giảm màn hình của trình mô phỏng, ở kích thước bình thường thì hoàn toàn không có vấn đề gì
Hy vọng nó giúp