Có thể là bản sao nhưng tôi không thể tìm thấy câu hỏi cụ thể trên SO, vì vậy, đây là.Thực tiễn tốt nhất để vẽ chiều cao hàng UITableView động
Tôi tò mò về chiều cao thay đổi động cho tất cả các hàng, thông thường, bởi vì bạn không biết độ dài của NSString được sử dụng cho nhãn.
Tôi biết bạn phải sử dụng phương pháp đại biểu này để thay đổi chiều cao dòng:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
Vấn đề là phương pháp đại biểu này được gọi là TRƯỚC tế bào được tạo ra (ví dụ: gọi trước khi cellForRowAtIndexPath
). Vì vậy, những gì tôi đã nghĩ là tạo ra một tế bào giả trong viewWillAppear
và một phương pháp thêm chiều cao ô vào một mảng ánh xạ tới nguồn dữ liệu của chế độ xem bảng (trong trường hợp của tôi cũng là một mảng).
viewWillAppear
thực hiện một phương pháp quan trọng này để có được chiều cao:
[NSString sizeWithFont: constrainedToSize: lineBreakMode:]
Sau đó, trong heightForRowAtIndexPath
tôi có thể trả lại chiều cao tế bào như vậy:
//cellHeights is an ivar populated in viewWillAppear
return [[cellHeights objectAtIndex:indexPath.row] floatValue];
tôi đã tự hỏi nếu có một cách tốt hơn để tự động thay đổi chiều cao hàng?
Tôi nhận thấy điều này sẽ làm giảm hiệu suất cho một số lượng lớn hàng (lớn hơn 1000, tôi tin). Nhưng trong trường hợp của tôi, các hàng của tôi sẽ không bao giờ đến gần con số đó. Vì vậy, hiệu suất đạt được là không đáng kể.
Cảm ơn trước!
Quá tệ. Tôi cũng hy vọng sẽ có nhiều phản hồi hơn nữa. Cảm ơn vì đầu vào của bạn! –