Ok, đã có một chấp nhận câu trả lời nhưng tôi nghĩ rằng 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 quan điểm của bạn và không che giấu nó vào các giới hạn của lớp xem (mà thực sự là hành vi mặc định). Đây là đoạn 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 đây là nếu bạn muốn biên giới của bạn sẽ được 1 đoàn lớn, nếu bạn muốn biết thêm bạn thích ứng với borderWidth
và khung của lớp cho phù hợp. này là tốt hơn so với sử dụng một cái nhìn thứ hai lớn hơn một chút như một CALayer
nhẹ hơn một UIView
và bạn không cần phải làm thay đổi khung myView
, đó là tốt ví dụ nếu myView
là một NB UIImageView
: Đối với tôi kết quả không hoàn hảo trên mô phỏng (lớp không chính xác ở đúng vị trí sao cho lớp dày hơn ở một bên đôi khi) nhưng chính xác là những gì được yêu cầu trên thiết bị thực.
EDIT
Trên thực tế vấn đề tôi nói về trong N.B là chỉ vì tôi đã giảm màn hình của mô phỏng, trên kích thước bình thường có là hoàn toàn không có vấn đề
Hy vọng nó giúp
Nguồn
2015-11-06 09:03:31
Tôi đã sử dụng này trên quan điểm của UITableViewCell. nhưng trên dòng, self.frame = CGRectInset (self.frame, -borderWidth, -borderWidth); Chiều rộng và chiều cao của chế độ xem tiếp tục tăng nếu chúng tôi tiếp tục cuộn bảng xem .. Vì vậy, tôi đã kết thúc bằng cách xóa nó. – Neela
Phương pháp này tiếp tục tăng chiều cao xem để tôi xóa mã này và sử dụng mã sau self.view.layer.borderColor = [[Màu UIColorWithRed: 209.0f/255.0f màu xanh lá cây: 33.0f/255.0f màu xanh: 8.0f/255.0 f alpha: 1.0f] CGColor]; self.view.layer.borderWidth = 1.0f; –
Cố gắng giải pháp này trong Swift, không làm việc không may, biên giới tiếp tục vẽ bên trong UIImageView – DCDC