Ich muss UIWebView
und einige Buttons und Labels in UIScrollView
hinzufügen. Ich habe viele Fragen zum Hinzufügen von UIWebView
in UIScrollView
gesehen, aber leider konnten sie mir bei der Erledigung meiner Aufgabe nicht helfen. Also bitte nicht als Duplikat oder etwas markieren.
Theoretisch kann das Problem durch folgende Schritte gelöst werden:
1) Machen Sie UIWebView
zu einer Untersicht von UIScrollView
.
2) Rufen Sie setScrollEnabled:NO
für UIWebView
auf, um das systemeigene Scrollen zu deaktivieren.
3) Legen Sie die Inhaltsgröße von UIScrollView
und UIWebView
auf die Größe der in UIWebview
geladenen HTML-Zeichenfolge fest.
Ich verwende iOS 6 und StoryBoards. Ich habe UIWebView
als Unteransicht von UIScrollView
hinzugefügt.
Dann habe ich in meinem webViewDidFinishLoad
folgendes benutzt:
Das gibt mir die Höhe des WebView.
Beim StackOverFlow bin ich auf Folgendes gestoßen:
%Vor% Dann habe ich die Größe von UISCrollView
auf die Größe UIWebView
:
Ich kann einen Bildlauf bis zum Ende durchführen, aber unten ist ein weißer Bereich und UIWebView
wird nicht entsprechend der Größe des geladenen HTML-Inhalts skaliert.
Sieht so aus, als ob UIScrollView
seine Größe auf die Größe des Inhalts von UIWebView
geändert hat, aber UIWebView
zeigt nicht alles an. Wie kann ich dieses Problem lösen?
Bitte berate mich nicht über die Apple-Dokumentation, die besagt, dass du UIWebView
in UIScrollView
nicht verwenden solltest. Ich weiß das bereits, aber ich möchte es gemäß meiner Projektanforderung verwenden.
Ich denke, ich kann hier etwas Licht werfen. Ich denke, du verwechselst die Rahmengröße und die Inhaltsgröße. Zuerst werde ich die Methodik beschreiben und dann konkrete Vorschläge machen.
Methodik
Sie haben einen WebView und Sie haben den Bildlauf korrekt deaktiviert und die contentSize auf die volle Größe des Webinhalts gesetzt. Sie sollten die Bildgröße auch auf die volle Größe des Web-Inhalts einstellen. Dann fügen SieSubview dem ScrollView am Ursprung (0,0) hinzu. Setzen Sie scrollView contentSize auf die volle Größe des Webinhalts. Setzen Sie den scrollView-Rahmen auf die Grenzen von viewController.view.
Konkrete Vorschläge
setBackgroundColor:[UIColor redColor]
webView.frame.size
nicht groß genug ist. Ich habe die selbe Situation gefunden, dass webView keine Änderung der Bildgröße zeigt, ein Leerzeichen bleibt während des Scrollens übrig, wie Jessica erwähnt hat. Ich habe mein Projekt überprüft und festgestellt, dass ich die AutoLayout-Funktion aktiviert habe. Daher habe ich folgende Lösungen gefunden:
Fügen Sie der webView nach dem Ändern der Größe des webView-Rahmens eine Höheneinschränkung hinzu, indem Sie den folgenden Code verwenden:
self.webViewHeightConstraint.constant = fittingSize.height; [webView updateConstraints];
Um die Höhe des Inhalts eines UIWebView zu ermitteln, empfehle ich dringend die Antwort von "Phenomena" hier: Ссылка (Nicht die akzeptierte Antwort, die eine unten.) Er / sie schlägt vor, 'CGSizeZero' NICHT zu verwenden und gibt eine bessere Lösung.
Tags und Links iphone ios xcode uiwebview uiscrollview