Okay, ich weiß, diese Frage wurde gestellt und gefragt. Es gibt viele gute Vorschläge, aber ich kann nicht wie erwartet funktionieren. Ich versuche, eine Tableview-Zelle zu erstellen, die ihre Höhe dynamisch auf der Grundlage von unterschiedlichem HTML festlegen kann. Was jeder vorschlägt, ist die folgende Methode.Bestimmen UIWebView Höhe basierend auf dynamischen lokalen Inhalt, innerhalb einer Variablenhöhe TableViewCell
-(void)webViewDidFinishLoad:(UIWebView *)webView
sagen Sie die Höhe berechnen entweder mit Hilfe von Javascript wie folgt:
NSString *output = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight;"];
Oder so etwas wie dies zu tun (ich diese erstellt):
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;
die beiden Methoden zurückkehren korrekte Höhe der Webansicht, aber sie treten auf, nachdem die Tabellenansicht initialisiert wurde. Dieses webViewDidFinishLoad wird nach der heightForRowAtIndexPath-Methode aufgerufen. Also, wenn der Tisch gebaut wird, habe ich nicht die Höhe der Zelle. Also dann sagen alle gut, dann machen Sie einfach eine Tabellenansicht in Ihrem webViewDidFinishLoad neu laden, die wieder funktioniert, aber ich mag das nicht, weil es eine Verzögerung gibt und es das Blättern der Tabellenansicht abgehackt macht, wenn Sie zu diesem Teil kommen. Wie kann ich das beheben? Und mach es glatt? Ich überlegte, ob ich vielleicht die Höhe der Webansicht bestimmen sollte, bevor ich die Ansicht geladen habe, aber ich bin mir nicht sicher, wie ich das machen würde. Es wurde auch versucht, den HTML-Code in eine reine Textzeichenfolge umzuwandeln, aber dies führt zu einer falschen Höhe, da der HTML-Code Leerzeichen und andere Zeichen enthält, während der Klartext dies nicht tut. Jede Hilfe wäre willkommen!
Können Sie die Web-Ansicht außerhalb des Bildschirms früh genug laden, so dass sie wahrscheinlich beendet wird, bevor heightForRowAtIndexPath aufgerufen wird? Haben Sie auch die Art der Verzögerung und der Rauheit festgestellt? Vielleicht kann dieses Problem gelöst werden. –
Großartige Idee! Das ist, was ich getan habe. – mikemike396