【发布时间】:2020-01-02 13:15:54
【问题描述】:
我在我的应用程序的本机部分做一些事情。然后,当我从服务器获取 sessionID 时,我将其设置为 WKWebView。然后,我将我的网页加载到 webview 本身。问题是,我使用名为“didfinish”的函数来播放 gif。该函数有效,每次都会调用它,但是当我尝试停止 gif 时,它对我的图像视图显示 nil。
我将我的 imageview 放在覆盖 WKWebview 的视图顶部,该用户不会看到一个空白视图,直到它完全加载。
override func viewDidLoad() {
super.viewDidLoad()
...some code...
imageViewForAnimation.loadGif(named:"gif")
loadWeb()
}
func loadWeb(){
setCookie()
view=self.webview
webview?.load(URLRequest(url: URL(string: lastURL)!))
self.webview.navigationDelegate=self
}
func setCookie(){
print("session id is:\(session_id)")
let cookie = HTTPCookie(properties: [
.domain: "mywebpage.com",
.path: "/",
.name: "sessionID",
.value: "\(session_id)",
.secure: "TRUE",
.expires: NSDate(timeIntervalSinceNow: 31556926)
])!
let websitedataStorage=WKWebsiteDataStore.nonPersistent()
websitedataStorage.httpCookieStore.setCookie(cookie) {
}
let configuration=WKWebViewConfiguration()
configuration.websiteDataStore=websitedataStorage
webview=WKWebView(frame: self.view.frame, configuration: configuration)
}
没有任何 gif 或没有任何额外的东西,一切都很好。我想要的是,如果页面准备好了
func webView(_ webView: WKWebView,
didFinish navigation: WKNavigation!) {
self.imageViewForAnimation.image=nil //for stopping animating
self.coverViewOnTopOfWebView.alpha=0 //show web now
}
我得到的错误是
线程 1:致命错误:在隐式中意外发现 nil 展开可选值
在 didFinish 函数中。为了播放 gif,我使用了这个类
https://github.com/swiftgif/SwiftGif/blob/master/SwiftGifCommon/UIImage%2BGif.swift
提前感谢大家的帮助和建议。
【问题讨论】: