113

Tôi có một chút mất mát. Tôi đã sử dụng thuộc tính lớp của UIView để làm tròn các góc của nhiều thành phần trong ứng dụng của mình. Tuy nhiên, một UIImageView này chỉ đơn giản là không tuân thủ. Không chắc chắn những gì tôi đang thiếu.

UIImageView (được gọi là previewImage) được chứa trong Ô xem bảng. Tôi đã thử đặt nhiều thuộc tính angleRadius (trong chính ô và trong bộ điều khiển tạo ô) nhưng không có kết quả.

static NSString *CellIdentifier = @"MyTableViewCell";

MyTableViewCell *cell = (MyTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:CellIdentifier owner:self options:nil];
    cell = [topLevelObjects objectAtIndex:0];
    cell.previewImage.layer.cornerRadius = 20; //Made it 20 to make sure it's obvious.
}

Có điều gì đó về cách các tế bào được tải mà tôi đang thiếu?

|
351

Bạn cần đặt thuộc tính của lớp masksToBoundsthành YES:

cell.previewImage.layer.masksToBounds = YES;

Điều này là do UIImageViewđiều khiển tạo ra một khung nhìn giả để giữ UIImageđối tượng.

|
22

Cũng đáng lưu ý rằng

  1. Nếu bạn đang sử dụng facFit AND angleRadius với clipToBound / maskToBound, bạn sẽ không nhận được các góc tròn.

tức là nếu bạn có cái này

theImageView.contentMode = .scaleAspectFit

   theImageView.layer.cornerRadius = (theImageView.frame.size.height)/2
    theImageView.clipsToBounds = true

hoặc là

theImageView.layer.masksToBounds = true

sẽ không hoạt động . bạn sẽ phải thoát khỏi mã facFit

//theImageView.contentMode = .scaleAspectFit
  1. Đảm bảo chiều rộng và chiều cao của Chế độ xem hình ảnh giống nhau
|
22

Điều này sẽ làm việc

cell.previewImage.clipsToBounds = YES;

cell.previewImage.layer.cornerRadius = 20;
|
11

Tôi tin rằng bạn cần phải thiết lập:

cell.previewImage.layer.masksToBounds = YES;
cell.previewImage.layer.opaque = NO;
|
4

Trong Trình tạo giao diện Xcode, chọn thuộc tính Vẽ 'Clip Subview' cho chế độ xem cùng với việc đặt bán kính góc trong mã cell.previewImage.layer.cornerRadius = 20;thực hiện công việc cho tôi!

Xem tùy chọn 'Clip Subview' trong IB

|
2

Hãy thử đoạn mã dưới đây

cell.previewImage.layer.cornerRadius = 20;
cell.previewImage.clipsToBounds = YES;
|
1

Hãy thử mã này: -

self.imgaviewName.clipsToBounds = true
self.imageviewName.layer.cornerRadius = 10
|
  • 1

    Câu trả lời chỉ có mã không được khuyến khích. Vui lòng nhấp vào chỉnh sửa và thêm một số từ tóm tắt cách mã của bạn giải quyết câu hỏi hoặc có thể giải thích câu trả lời của bạn khác với câu trả lời / câu trả lời trước đó như thế nào. Cảm ơn

    – Hồ Kim Yến 11:34:42 20/12/2018
0

Swift 4.2 Trả lời:

Để bán kính góc hoạt động, hãy thêm hình ảnh vào a UIViewvà sau đó bạn cần đặt thuộc tính của hình ảnh masksToBoundsthànhtrue :

planeImage.layer.masksToBounds = true
planeImage.layer.cornerRadius = 20

Lưu ý: Thay thế 20 bằng mong muốn cornerRadius

|
0
-(void) viewDidAppear:(BOOL)animated{
       [super viewDidAppear:animated];
       [self setMaskTo:viewDistance 
             byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight];
           }

- (void)setMaskTo:(UIView*)view byRoundingCorners:(UIRectCorner)corners
     {
      UIBezierPath *rounded = [UIBezierPath 
                bezierPathWithRoundedRect:view.bounds
                                              byRoundingCorners:corners

                     cornerRadii:CGSizeMake(20.0, 20.0)];

          CAShapeLayer *shape = [[CAShapeLayer alloc] init];
          shape.frame = self.view.bounds;
         [shape setPath:rounded.CGPath];
          view.layer.mask = shape;
       }
|

Câu trả lời của bạn (> 20 ký tự)

Bằng cách click "Đăng trả lời", bạn đồng ý với Điều khoản dịch vụ, Chính sách bảo mật and Chính sách cookie của chúng tôi.

Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ hoặc hỏi câu hỏi của bạn.