UIWebView Innerhalb der UIScrollView-Inhaltsgröße

8

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:

%Vor%

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 :

gesetzt %Vor%

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.

    
Jessica 01.01.2013, 14:05
quelle

3 Antworten

2

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

  • Der Code "fittingSize", den Sie gepostet haben, sieht für mich nicht richtig aus. Der Zweck dieses Codes ist es, den Rahmen des WebView zu setzen. Verwenden Sie NSLog oder Haltepunkte, um herauszufinden, ob das die volle Größe des Webinhalts festlegt.
  • Beachten Sie, dass der Zweck des von Ihnen geposteten JavaScript-Codes mit dem von Ihnen geposteten "fittingSize" -Code übereinstimmt. Überprüfen Sie, welche die richtige Ausgabe erzeugt.
  • Versuchen Sie, die Rahmengrößen von webView und scrollView zu ermitteln, um das Debuggen zu erleichtern. Der beste Weg, dies zu tun, ist, verschiedene Hintergrundfarben wie folgt einzustellen: setBackgroundColor:[UIColor redColor]
  • Meine beste Vermutung ist, dass webView.frame.size nicht groß genug ist.
Ed Chin 17.02.2013 06:50
quelle
2

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:

  1. deaktivieren Sie autoLayout.
  2. 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];

philions 29.05.2014 08:11
quelle
0

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.

    
Custom Bonbons 14.01.2015 14:12
quelle