11 Stimmen

Wie man die Farbe eines UIWebViews steuert (bevor der Inhalt geladen wird)?

Ich versuche, eine schwarze UIWebView zu haben, bevor ihre Inhalte geladen werden. In IB habe ich sowohl versucht, die Hintergrundfarbe der UIWebView schwarz zu machen, als auch sie mit einem transparenten Hintergrund zu versehen und den Hintergrund des übergeordneten Views schwarz zu machen. Beides funktioniert nicht. Wenn meine UIWebView geladen wird, ist der Hintergrund davon weiß. Wie kann ich das beheben?

*Ich hoffe, dass es nicht darauf hinausläuft, dass ich zuerst einen HTML-String laden muss (bevor ich meinen tatsächlichen Webinhalt lade), um den Hintergrund über CSS auf schwarz zu setzen.

24voto

cornellouis Punkte 289

Der Weg, wie ich das gemacht habe, war, das UIWebView auf einem schwarzen View zu platzieren. Dann haben wir die Webseite und das Webview auf transparent gesetzt. Funktioniert in iOS 4.2.

Auf dem Übergeordneten Element:

view.backgroundColor = [UIColor blackColor];

Auf dem WebView:

webView.opaque = NO;
webView.backgroundColor = [UIColor clearColor];

Im Web HTML:

12voto

zonble Punkte 4203

Eigentlich kann das Einstellen der Hintergrundfarbe nicht dazu führen, dass der Webview komplett schwarz angezeigt wird. Der Inhalt einer Webseite wird in einem Unterfenster innerhalb des Webviews präsentiert. Ein Webview enthält viele nicht dokumentierte Unterfenster, darunter eine UIScrollView, die es ermöglicht, den Inhalt zu scrollen, und eine UIScrollView enthält UIWebDocumentView, die den Webinhalt zeichnet. Sie liegen über dem Hintergrund Ihres Webview, sodass sie den Hintergrund abdecken. Was Sie sehen können, ist die UIWebDocumentView, und das Einstellen der Hintergrundfarbe kann Ihren Webview nicht komplett schwarz machen.

Ich vermute die Lösung besteht darin, einen schwarzen View über Ihren Webview zu platzieren und den View auszublenden, wenn die Delegate-Methoden wie webViewDidFinishLoad: oder webViewDidStartLoad: aufgerufen werden.

11voto

smileBot Punkte 19189

Eigentlich ist das wirklich einfach:

[self.webView setOpaque:NO];
self.webView.backgroundColor = [UIColor purpleColor];

Dies zeigt die Hintergrundfarbe an, und sobald der Webview geladen ist, wird sie glücklicherweise verschwinden.

1voto

Jaywant Khedkar Punkte 5467

Versuchen Sie dies, es hat bei mir funktioniert,

Befolgen Sie die folgenden Schritte ,

Setzen Sie UIview und Webview auf opak = NEIN und Hintergrundfarbe auf weiß

Bildbeschreibung hier eingeben

Fügen Sie den folgenden Code vor dem Laden des Webviews hinzu,

  _webViewOutlet.backgroundColor = [UIColor colorWithWhite:1 alpha:1]; 

Hoffentlich hilft dies jemandem

1voto

godblessstrawberry Punkte 3611

Um dieses weiße Flackern zu entfernen, ändere ich nur die Hintergrundfarbe auf die Farbe meiner Ansicht. Mein Code verwendet Violett, um ein allgemeineres Beispiel zu zeigen. Schwarz wird einfach als UIColor.black verwendet.

Das Bearbeiten von loadView funktioniert für mich nicht, aber viewWillAppear hat gut funktioniert

override func viewWillAppear(_ animated: Bool) {
    ...
    webView.isOpaque = false
    webView.backgroundColor = UIColor(red: 41/255, green: 45/255, blue: 91/255, alpha: 1)
    ...
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X