Как контролировать цвет UIWebView (до загрузки содержимого)? - PullRequest
10 голосов
/ 22 марта 2010

Я пытаюсь сделать UIWebView ЧЕРНОГО цвета перед загрузкой его содержимого. В IB я попытался сделать цвет фона UIWebView черным, а также сделать его прозрачным, а фон родительского вида - черным. Оба не работают. Когда мой UIWebView загружается, фон белого цвета. Как я могу это исправить?

* Я надеюсь, что это не сводится к необходимости сначала загружать строку html (перед загрузкой моего реального веб-содержимого), чтобы установить черный фон для CSS.

Ответы [ 7 ]

25 голосов
/ 15 февраля 2011

Я сделал так, чтобы UIWebView отображался в черном цвете. Затем мы устанавливаем веб-страницу и веб-просмотр, чтобы быть понятными. Работает в iOS 4.2.

На суперпредставлении:

view.backgroundColor = [UIColor blackColor];

В веб-просмотре:

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

В Сети HTML:

<body style="background-color:transparent;">
11 голосов
/ 01 августа 2013

На самом деле, это действительно просто:

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

Это покажет цвет фона, и как только веб-просмотр загрузится, он, к счастью, исчезнет.

11 голосов
/ 23 марта 2010

На самом деле установка цвета фона не может сделать просмотр в Интернете полностью черным. Содержимое веб-страницы представлено в подпредставлении в веб-представлении, веб-представление содержит множество недокументированных подпредставлений, включая UIScrollView, который позволяет прокручивать содержимое, и UIScrollView содержит UIWebDocumentView, который рисует веб-содержимое. Они находятся над фоном вашего веб-вида, поэтому они покрывают фон, вы можете видеть UIWebDocumentView, а установка цвета фона не может сделать ваш веб-просмотр полностью черным.

Полагаю, решение в том, что вы можете попытаться поместить черный вид поверх веб-представления и скрыть его при вызове таких методов делегата, как webViewDidFinishLoad: или webViewDidStartLoad:.

1 голос
/ 05 мая 2017

Попробуй Это у меня сработает,

Выполните следующие шаги,

Установить непрозрачный UIview и webview = НЕТ и цвет фона белый

enter image description here

Добавить строку кода перед загрузкой веб-просмотра,

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

Надеюсь, так что это помощь для кого-то

0 голосов
/ 22 сентября 2017

чтобы убрать это белое мерцание, я меняю только backgroundColor на цвет моего обзора. мой код использует фиолетовый, чтобы показать более общий пример. черный используется просто как UIColor.black

редактирование loadView у меня не работает, но viewWillAppear нормально работало

override func viewWillAppear(_ animated: Bool) {
    ...
    webView.isOpaque = false
    webView.backgroundColor = UIColor(red: 41/255, green: 45/255, blue: 91/255, alpha: 1)
    ...
}
0 голосов
/ 22 сентября 2016

Добавьте UIView (я использовал blackView) с вашим собственным цветным фоном (я использовал черный цвет) поверх WebView, а затем отобразите его при загрузке WebView и скройте при загрузке. У WebView должен быть прозрачный фон, а у корневого представления должен быть тот же цвет фона, что и у вашего пользовательского цвета (в моем случае черный)

  • in viewDidLoad () view.backgroundColor = UIColor.blackColor() webView.opaque = false

  • in webViewDidStartLoad (webView: UIWebView) blackView.alpha = 1

  • in webViewDidFinishLoad (webView: UIWebView) blackView.alpha = 0

0 голосов
/ 12 февраля 2014

Для iOS 7, вот еще один пример. «Self» - это UIViewController, который помещен в стек контроллера навигации:

- (void) loadView
{
    UIWebView *webView = [[UIWebView alloc] initWithFrame: [[UIScreen mainScreen] bounds]];      // iOS 7 - make the web view the entire display

// -- /2236311/kak-kontrolirovat-tsvet-uiwebview-do-zagruzki-soderzhimogo --

    webView.backgroundColor = [[Settings sharedInstance] backgroundColor];
    webView.opaque          = NO;                                               // setting this to NO fixes the background color problem
    webView.delegate        = self;

    self.view = webView;

    NSBundle      *thisBundle = [NSBundle mainBundle];
    NSString            *path = [thisBundle pathForResource: @"Instructions" ofType: @"html"];
       NSURL *instructionsURL = [[NSURL alloc] initFileURLWithPath: path];

    [webView loadRequest: [NSURLRequest requestWithURL: instructionsURL]];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...