Được rồi, vì vậy tôi biết câu hỏi này đã được hỏi và hỏi. Có nhiều gợi ý tốt, nhưng tôi không thể làm được điều này như mong đợi. Tôi đang cố gắng để tạo ra một tế bào tableview có thể tự động thiết lập chiều cao của nó trên tải dựa trên html khác nhau. Những gì mọi người đề nghị là sử dụng phương pháp sau đây.Xác định chiều cao UIWebView dựa trên nội dung động của địa phương, trong một chiều cao có thể thay đổi TableViewCell
-(void)webViewDidFinishLoad:(UIWebView *)webView
Họ nói để tính toán chiều cao hoặc sử dụng javascript như sau:
NSString *output = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"];
Hoặc làm một cái gì đó như thế này (tôi tạo này):
self.webView = webView;
CGRect frame = webView.frame;
frame.size.height = 1;
webView.frame = frame;
CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
frame.size = fittingSize;
webView.frame = frame;
Cả hai phương pháp trả lại chính xác chiều cao của webview, nhưng chúng xảy ra sau khi tableview được khởi tạo. WebViewDidFinishLoad này được gọi sau phương thức heightForRowAtIndexPath. Vì vậy, khi bảng đang được xây dựng tôi không có chiều cao của tế bào. Vì vậy, sau đó mọi người nói tốt sau đó chỉ cần làm một tải lại tableview bên trong webViewDidFinishLoad của bạn mà một lần nữa không làm việc, nhưng tôi không thích điều này vì có một tụt hậu và nó làm cho di chuyển của tableview choppy khi bạn nhận được để phần đó. Làm thế nào tôi có thể sửa lỗi này? Và làm cho nó trơn tru? Tôi đã nghĩ đến có thể bằng cách nào đó xác định chiều cao webview trước khi tải xem, nhưng không chắc chắn làm thế nào tôi sẽ làm điều đó. Cũng cố gắng chuyển đổi html thành một chuỗi văn bản thuần túy, nhưng điều này dẫn đến chiều cao giả vì html có không gian và nội dung trong khi văn bản thuần túy thì không. Bất kỳ trợ giúp sẽ được đánh giá cao!
Bạn có thể tải chế độ xem web ngoài màn hình sớm để có thể hoàn thành trước khi heightForRowAtIndexPath được gọi không? Ngoài ra, bạn có xác định được bản chất của độ trễ và sự xáo trộn không? Có lẽ vấn đề đó có thể được giải quyết. –
Ý tưởng tuyệt vời! Đây là những gì tôi đã làm. – mikemike396