Ứng dụng chứa UITableView chứa UITableViewCell tùy chỉnh. Tế bào lần lượt chứa một UIImageView.Tại sao UIImageView được đổi kích thước khi gán hình ảnh mới trong iOS 6?
Vấn đề là thiết lập các hình ảnh trong cellForRowAtIndexPath làm cho hình ảnh mất toàn bộ khu vực UITableViewCell:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
CustomCell *cell = [self.tableView dequeueReusableCellWithIdentifier:@"CustomCell"];
NSString *path = [[NSBundle mainBundle] pathForResource:@"bigrect" ofType:@"png"];
UIImage *image = [[UIImage alloc] initWithContentsOfFile:path];
cell.imageView.image = image;
return cell;
}
Trong IB, 'Aspect Fit' đã được chọn là chế độ, nhưng thay đổi trường này không có ảnh hưởng rõ ràng đến kết quả.
Tuy nhiên, khi hình ảnh được đặt từ IB, không có cuộc gọi đến cell.imageView.image = image trong mã của tôi, kết quả chính xác là những gì tôi muốn xem. Những hình ảnh chỉ nằm trong giới hạn tôi đã xác định cho UIImageView trong IB và không cố gắng mở rộng để phù hợp với toàn bộ chiều cao thẳng đứng của UITableViewCell:
hình ảnh tôi đang sử dụng là 1307x309 pixel, trong trường hợp đó là quan trọng. Các thử nghiệm đã được chạy trên trình mô phỏng iOS 6.1.
Tôi nhận thấy điều này từ UIIMageView Documentation:
Trong iOS 6 và sau đó, nếu bạn gán giá trị cho tài sản restorationIdentifier của quan điểm này, nó cố gắng để bảo vệ khung của hình ảnh hiển thị. Cụ thể, lớp bảo tồn các giá trị của các giới hạn, thuộc tính trung tâm và biến đổi của khung nhìn và thuộc tính anchorPoint của lớp cơ bản. Trong quá trình khôi phục, chế độ xem hình ảnh sẽ khôi phục các giá trị này để hình ảnh xuất hiện chính xác như trước đây. Để biết thêm thông tin về cách bảo tồn và khôi phục trạng thái hoạt động, hãy xem Hướng dẫn lập trình ứng dụng iOS.
Tuy nhiên, không có gì ở đây hoặc ở nơi khác trong tài liệu tôi có thể tìm được giải quyết vấn đề. Thêm "ID khôi phục" của "Foo" vào UIImageView trong IB dưới 'Identity' không thay đổi hành vi. Bỏ chọn 'Sử dụng Autolayout' cũng không thay đổi hành vi.
Làm cách nào để ngăn iOS thay đổi kích thước UIImageView trong UITableViewCell khi đặt hình ảnh?
tại sao không đặt đúng khung hình ảnh sau khi gán thuộc tính hình ảnh của nó? –
@PatrickGoley, đó có thể là phương sách cuối cùng mà tôi cho là. Tôi thực sự không phải đối phó với bố trí bằng tay mặc dù. –