Tôi tò mò khi kích thước nội dung của UITableView được cập nhật sau khi thực hiện cuộc gọi hoạt ảnh chèn/xóa. Tôi nghĩ rằng nó sẽ giống như hầu hết các khối [UIView animation ...] trong đó kích thước khung hình/kích thước nội dung sẽ được cập nhật ngay lập tức ngay cả khi hoạt hình chưa hoàn thành, nhưng nó không có vẻ như vậy. Bất kỳ ý tưởng?Khi nào cập nhật kích thước nội dung UITableView với hàng chèn/xóa hoạt ảnh
Trả lời
Kích thước nội dung sẽ thay đổi sau khi kêu gọi các đại biểu về chiều cao:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
Cảm ơn bạn đã phản hồi. Có anyway tôi có thể được thông báo hoặc bất kỳ loại phương pháp đại biểu sẽ cho tôi biết rằng kích thước nội dung đã thay đổi? Dường như xảy ra SAU khi hoạt hình hoàn tất nhưng tôi hy vọng sẽ nhận được kích thước nội dung mới TRƯỚC KHI vì vậy tôi có thể tạo hiệu ứng động xung quanh bảng cho phù hợp – SLEW
Tôi đã thử điều này và đặt báo cáo nhật ký trước và sau khi tôi gọi phương thức tableview: heightForRowAtIndexPath: không thấy kích thước nội dung được cập nhật. Tuy nhiên, điều này đã giúp tôi đưa ra giải pháp để tính kích thước nội dung. Tôi sẽ đăng giải pháp dưới dạng câu trả lời riêng. – Daren
Thật không may, tôi đã không thể tìm thấy một cách tốt để cập nhật các contentSize khi thêm/xóa các hàng từ một UITableView một trong hai, nhưng Tôi đã tìm thấy một cách để tính toán những gì nó sẽ được nếu bạn biết đường dẫn chỉ số của các tế bào bạn đang thêm/loại bỏ.
Sử dụng đường dẫn chỉ mục của các hàng đã sửa đổi, bạn có thể tính chiều cao của các ô tương ứng với phương thức tableView: heightForRowAtIndexPath: và thêm nó vào chiều cao kích thước nội dung hiện tại của chế độ xem bảng. Dưới đây là một ví dụ nếu bạn đang thêm chỉ một dòng:
[self.tableView insertRowsAtIndexPaths:@[indexPathOfNewRow] withRowAnimation:UITableViewRowAnimationAutomatic];
CGFloat newCellHeight = [self tableView:self.tableView heightForRowAtIndexPath:indexPathOfNewRow];
CGFloat newContentSizeHeight = self.tableView.contentSize.height + newCellHeight
Dường như sizeThatFits()
có thể tiếp xúc với chiều cao của một mới contentSize
đó là chưa giải quyết. Sau đó, bạn có thể chỉ định kích thước đang chờ xử lý đó để giải quyết sớm cho hoạt ảnh cuộn.
Với một cái gì đó như thế này:
extension UIScrollView {
var pendingContentSize: CGSize {
var tallSize = contentSize
tallSize.height = .greatestFiniteMagnitude
return sizeThatFits(tallSize)
}
func scrollToBottom(animated: Bool) {
contentSize = pendingContentSize
let contentRect = CGRect(origin: .zero, size: contentSize)
let (bottomSlice, _) = contentRect.divided(atDistance: 1, from: .maxYEdge)
guard !bottomSlice.isEmpty else { return }
scrollRectToVisible(bottomSlice, animated: animated)
}
}
Tôi có thể viết xem mã điều khiển như thế này:
tableView.insertRows(at: [newIndexPath], with: .none)
tableView.scrollToBottom(animated: true)
và có bàn di chuyển tất cả các cách để phía dưới (bằng cách sử dụng mới kích thước nội dung) thay vì di chuyển xuống hàng thứ 2 đến cuối cùng (sử dụng kích thước nội dung cũ).
- 1. UITableView trong bảng phân cảnh không cập nhật kích thước nội dung khi xoay
- 2. Vấn đề kích thước nội dung cho UITableView trong UIscrollView
- 3. Nội dung cuộnView cập nhật
- 4. đếm số hàng bị ảnh hưởng trước khi cập nhật trong trình kích hoạt
- 5. CẬP NHẬT Hàng Tương tự Sau khi CẬP NHẬT trong Trình kích hoạt
- 6. Kích thước nội dung cuộn UITableView không chính xác sau khi loại bỏ một chế độ xem khác
- 7. Kích hoạt hoạt ảnh khung hình CSS3 khi nội dung cuộn vào chế độ xem
- 8. Kích thước nội tại không cập nhật khi thay đổi trạng thái UIButton
- 9. iOS - Đổi kích thước UIWebView để vừa với nội dung?
- 10. Bố cục cập nhật với hoạt ảnh
- 11. Kích thước tự động ElementHost với nội dung của nó
- 12. Thay đổi kích thước JScrollpane với nội dung có kích thước thay đổi
- 13. Làm cách nào để ngăn bảng đổi kích thước khi nội dung phát triển?
- 14. Làm cách nào để thay đổi kích thước hình ảnh để phù hợp với ô UITableView?
- 15. Làm cách nào để tự động thay đổi kích thước div thành kích thước nội dung của nó khi nội dung của div đã thay đổi?
- 16. Cập nhật DIV với nội dung XML trên hover
- 17. Bảng cập nhật không cập nhật nội dung
- 18. PostgreSQL Kích hoạt và các hàng được cập nhật
- 19. Trình kích hoạt chỉ cập nhật hàng được chèn
- 20. Cách thay đổi kích thước nội dung JavaFX ScrollPane cho vừa với kích thước hiện tại
- 21. Cái gì nên là bảng chứa hàng cập nhật cho kích hoạt cập nhật
- 22. Nhận ListBox để thay đổi kích thước với cửa sổ, nhưng không thay đổi kích thước với nội dung
- 23. Thay đổi kích thước chiều cao UIWebView để phù hợp với nội dung
- 24. Làm thế nào để cập nhật nội dung ViewPager?
- 25. Tôi không muốn hoạt ảnh trong bản cập nhật bắt đầu, cập nhật kết thúc chặn cho uitableview?
- 26. Cách lấy nội dung UIScrollViewBật trong khi đang hoạt ảnh
- 27. Duy trì lựa chọn khi cập nhật UITableView qua reloadData
- 28. Quy mô kích thước của nội dung CALayer
- 29. Kích hoạt tải hình ảnh chậm sau khi hình ảnh đã được thay đổi kích thước
- 30. Nội dung kiểm soát nội dung kích thước để điền vào Silverlight 4
Bạn đã giải quyết vấn đề này chưa? Tôi đang chạy vào cùng một vấn đề. Chèn/xóa các hàng sau đó mong đợi tableView.contentSize được cập nhật, nhưng điều đó dường như không đồng bộ. – VaporwareWolf