2013-09-22 28 views
14

Tôi có đối tượng UIImageView được định cấu hình với Bố cục tự động. Tôi đã tạo ra các ràng buộc sao cho khung nhìn giữ một khoảng cách không đổi với người giám sát của nó. Trong định dạng hình ảnh nó sẽ như thế nào:Cách kết hợp các ràng buộc Bố cục tự động với thuộc tính contentMode của UIView

@"V:|-[imageView]-|" 
@"H:|-[imageView]-|" 

Nhưng tôi cũng muốn giữ tỷ lệ khía cạnh của hình ảnh bên dưới, vì vậy tôi đã gán UIViewContentModeScaleAspectFit-contentMode.

Tôi nghĩ tất cả mọi thứ đã làm việc tốt cho đến khi tôi thiết lập giá trị cornerRadius của liên CALayer:

self.imageView.layer.cornerRadius = 7; 
self.imageView.layer.maskToBounds = YES; 

Bây giờ khi xem hình ảnh được thay đổi kích cỡ, ví dụ do thay đổi hướng, các góc tròn sẽ bị mất tùy thuộc vào kích thước mới mà khung nhìn nhận được. Lý do là cornerRadius áp dụng cho UIImageView (khung trong dấu gạch ngang dưới đây), nhưng kể từ khi hình ảnh cơ bản cũng được thay đổi kích cỡ để tôn trọng contentMode (khung trong dấu hoa thị bên dưới), góc tròn không nhìn thấy được nữa:

-------------------------- 
|  **********  | 
|  *  *  | 
|  *  *  | 
|  *  *  | 
|  **********  | 
-------------------------- 

Có một cách để ngăn chặn hành vi này?

Trả lời

0

Một cách nhanh chóng để làm điều đó có thể là phân lớp UIImageView và đặt bán kính góc trong layoutSubviews.

27

như @ jacob-k đã nói, bạn nên thêm vào lớp con của bạn layoutSubviews, nhưng chỉ để thêm bạn nên gọi layoutIfNeeded trước tiên.

Ví dụ:

- (void)layoutSubviews 
{ 
    [super layoutSubviews]; 
    [self layoutIfNeeded]; 
    imageView.layer.cornerRadius = imageView.frame.size.width/2; 
} 

Nếu bạn sẽ không gọi layoutIfNeeded đầu tiên, sau đó nó áp dụng tất cả những thay đổi mà không hạn chế thiết lập của bạn.

+1

Cảm ơn bạn..làm việc như một sự quyến rũ. đấu tranh quá lâu. –

+0

Công việc này chỉ dành cho UITableViewCell nếu bạn đính kèm các ràng buộc vào ô xem bảng và KHÔNG cho contentView. (lượt xem vẫn có thể được thêm vào contentView –

+0

đây là giải pháp nếu bạn có các ràng buộc phức tạp cho tất cả các lớp kích thước trong uitableviewcell – khunshan

Các vấn đề liên quan