Как изменить черный экран на изображение, пока скрыто WKWebView - PullRequest
0 голосов
/ 16 апреля 2019

Я скрываю свой WKWebView во время загрузки.Но пока он скрыт, он просто показывает мне черный экран.

Я попытался подключить представление изображения с главной доски и показать его, пока WKWebView был скрыт.Но это дает мне фатальную ошибку потока 1. Неожиданно обнаружил nil при развертывании необязательного.

Вот мой код:

override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        webView.navigationDelegate = self

        logoImageView.image = #imageLiteral(resourceName: "mijnmedicijn") //error
        logoImageView.isHidden = false //error
        webView.isHidden = true
        webView.isOpaque = false
        webView.backgroundColor = UIColor.white

        let myURL = URL(string:"https://www.mijnmedicijn.nl/")
        let myRequest = URLRequest(url: myURL!)
        webView.load(myRequest)

        webView.addObserver(self, forKeyPath: #keyPath(WKWebView.estimatedProgress), options: .new, context: nil)

    }

    override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
        if keyPath == "estimatedProgress" {
            print(Float(webView.estimatedProgress))
            if Float(webView.estimatedProgress) == 1 {
                webView.isHidden = false
                logoImageView.isHidden = true
            }
        }
    }

Почему это не работает?Как бы я закрыл черный экран и показал изображение?Спасибо

Ответы [ 2 ]

0 голосов
/ 16 апреля 2019

В строке logoImageView.image = #imageLiteral(resourceName: "mijnmedicijn") //error

У вас должен быть ресурс изображения с именем "mijnmedicijn" в вашем проекте (комплект приложения), иначе он потерпит крах.

Я пробовал ваш код какс действительным ресурсом, и он успешно запущен, как и ожидалось в вашем вопросе.Но когда я дал недопустимое имя ресурса (то есть имя ресурса, которого не было в моем проекте), произошел сбой.

0 голосов
/ 16 апреля 2019

Если вам нужно объединить код раскадровки, тогда

override func loadView() {
  super.loadView()  // <<<< call this 
...