Как я могу дать WKWebView цветной фон

Я работаю над приложением, в котором загружаю разные html-файлы с в основном темным фоном. Прямо сейчас при переходе с одной страницы на другую появляется небольшая белая вспышка, предположительно потому, что следующая страница еще не загружена. Я хотел бы избавиться от этой вспышки и подумал, что самым простым способом было бы присвоить WebView цвет фона.

Я попытался установить цвет для WebView, а также для scrollView внутри него, но, похоже, это не сработало:

self.webView?.backgroundColor = UIColor.blackColor()
self.webView?.scrollView.backgroundColor = UIColor.blackColor()

Я вижу вспышку цвета при первой загрузке представления, но не при последующей навигации.


person chicken    schedule 26.12.2014    source источник
comment
Как мы можем изменить цвет фона на белый?   -  person Amit    schedule 12.05.2020


Ответы (4)


Чтобы остановить «белую вспышку» на темном фоне, сделайте следующее.

webView.opaque = false

Это на самом деле не решает проблему с цветом фона, но, по крайней мере, останавливает «белую вспышку», с которой вы сталкиваетесь. По-видимому, не существует способа изменить цвет фона WKWebView перед загрузкой на него HTML.

Swift 4

webView.isOpaque = false
person user5865651    schedule 01.02.2016
comment
Как изменить цвет на белый? - person Amit; 12.05.2020
comment
Как сделать исходный цвет фона WKWebView, скажем, пурпурным? - person Daniel Springer; 01.10.2020

self.webView = WKWebView()
self.webView.backgroundColor = UIColor(red:0.11, green:0.13, blue:0.19, alpha:1)
self.webView.scrollView.backgroundColor = UIColor(red:0.11, green:0.13, blue:0.19, alpha:1)

Не забывайте, что ваш WKWebView не является обязательным, поэтому, возможно, вы его не инициализируете.

person BilalReffas    schedule 06.11.2015
comment
Просто установка цвета scrollView сделала это за меня - person Kevin_TA; 16.08.2018

Раньше я скрывал WKWebView, когда делал запрос на загрузку в одном проекте.

webView.isHidden = true
webView.load(req)

Когда загрузка была завершена, я снова сделал webView видимым.

func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
       videoView.isHidden = false
}

func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
        activityIndicator.stopAnimating()
        videoView.isHidden = false
}
person Tommi Kivimäki    schedule 28.08.2017

Щелкните WKWebView на доске и выберите предпочтительный цвет фона на панели инспектора атрибутов.

Затем поместите content.isOpaque = false туда, откуда загружается ваш WKWebView, например в viewDidLoad()

@IBOutlet weak var content: WKWebView!
...
content.isOpaque = false
person Tomáš Pánik    schedule 07.09.2018
comment
Вместо этого вы также можете снять флажок Непрозрачный для WKWebView в раскадровке. - person Smartcat; 21.09.2018