Tôi có một tùy chỉnh động UITableViewCell
tận dụng bố cục tự động.Cách tiếp cận ưa thích để thay đổi nội dung UITableViewCell dựa trên chiều rộng ô
Tôi thay đổi nội dung văn bản của nhãn, tùy thuộc vào độ rộng của ô.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
...
cell.someLabel.text = CGRectGetWidth(cell.bounds) < 321 ? @"Concise" : @"Much longer blurb";
return cell;
}
reloadData
được gọi trong khi chuyển hướng để cập nhật nhãn.
Trong khi điều này xảy ra để làm việc, tôi tưởng tượng có một cách tốt hơn để xử lý này mà không liên quan đến chi phí nạp lại tableView.
(Không ai trong số những hạn chế cần phải được thay đổi. Các nhãn là ở cùng một chỗ, nhưng đơn giản chỉ ra nội dung khác nhau khi có nhiều chỗ cho nó.)
Tôi có nên phân lớp
UILabel
và thay đổi văn bản trong-didMoveToSuperview
?Có thể thay đổi văn bản trong
-layoutSubViews
không? (Điều đó sẽ không gây ra một cách bố trí khác vì văn bản đã được thay đổi?)
Cảm ơn bạn đã trả lời!
"không liên quan đến phí tải lại bảng" Tôi nghĩ điều đầu tiên cần làm là suy nghĩ lại lý do bạn tin rằng tải lại chế độ xem bảng là "trên cao". Nó khá hiệu quả, vì chỉ có dữ liệu ô có thể nhìn thấy được thực sự được tải mới - và mô hình dữ liệu của bạn phải hoàn toàn hiệu quả hoặc bạn đang làm sai. – matt
Nó chỉ có vẻ như quá mức cần thiết, Matt. Bố cục tự động đã xảy ra, do kết quả của tự động xoay vòng và tôi đoán nó có thể được xử lý ngay trong thẻ vượt qua bố cục đã xảy ra. Tôi chỉ không biết đủ về bố cục tự động để biết cách mà ô hoặc nhãn sẽ xử lý nó. –
Nhưng vấn đề tôi không đề cập đến là nhấp nháy tinh tế của tải lại mà bạn sẽ không nhìn thấy mà không cần tải lại. Nó sẽ trông đẹp hơn nếu tôi không phải tải lại bảng, và nó chỉ đơn giản là tự động xoay và redrew chính nó (với nội dung khác nhau). Khả thi? –