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

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

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

Ответ 1

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

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

Ответ 2

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

В супервизии:

view.backgroundColor = [UIColor blackColor];

В webView:

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

В веб-HTML:

<body style="background-color:transparent;">

Ответ 3

Собственно, это очень просто:

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

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

Ответ 4

Попробуй, это сработает для меня,

Следуйте инструкциям ниже,

Установить UIview и webview opaque = NO и цвет фона белый

введите описание изображения здесь

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

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

Надеюсь, что это поможет кому-то.

Ответ 5

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

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

// -- http://stackoverflow.com/questions/2491654/how-to-control-the-color-of-a-uiwebview-before-contents-load --

    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]];
}

Ответ 6

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

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

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

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

Ответ 7

чтобы удалить это белое мерцание, я меняю цвет фона на цвет моего представления. мой код использует фиолетовый, чтобы показать более общий пример. черный используется просто как 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)
    ...
}