Показать Splash screen до загрузки WKWebView
У меня есть простое приложение, которое загружает сайт:
import UIKit
import WebKit
class ViewController: UIViewController, WKNavigationDelegate {
var webView: WKWebView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.navigationDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let myURL = URL(string:"https://taxxx.ru/nc/")
let myRequest = URLRequest(url: myURL!)
webView.load(myRequest)
}
}
Я хочу показать пользователю LaunchScreen до того, как сайт не загрузится. Но не могу найти как это сделать.
Ответы (2 шт):
Можно над вашим вью контроллером (где идет загрузка) сделать еще вью, содержащую картинку как на экране ланч скрина, чтобы было незаметно, когда ланч скрин убирается. А уже эту вью с картинкой убирать (резко или плавно, как хотите) по событию окончания загрузки, который можно перехватить, если мне не изменяет память, вот этим методом https://developer.apple.com/documentation/webkit/wknavigationdelegate/1455629-webview. Только для этой функции, не забудьте подписать ваш вью контроллер под WKNavigationDelegate и сделать делегатом.
LaunchScreen не предназначен для подобного. Да и не есть хорошо так делать. Что если сайт не загрузится?
Но если так хочется - делаете дубликат вьюшки с LaunchScreen и накладываете его на своем контроллере. После окончания загрузки в методе делегата
webView(_:didFinish:)
Скрываете / убираете эту вьюшку.