我无法加载动画,也无法在加载请求后将其删除
I can't load animation and I can't remove it after request has been loaded
我在我的应用程序的本机部分做了一些事情。然后,当我从服务器获取 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
}
我得到的错误是
Thread 1: Fatal error: Unexpectedly found nil while implicitly
unwrapping an Optional value
在 didFinish 函数处。为了播放 gif,我使用了这个 class
https://github.com/swiftgif/SwiftGif/blob/master/SwiftGifCommon/UIImage%2BGif.swift
感谢大家提前提供的帮助和建议。
您在以下 loadWeb()
方法的代码中犯了错误。
view=self.webview
以上代码将 nil 设置为放置在 view
内的所有其他控件。
而不是将 self.webView
分配给 view
,您应该从情节提要中添加它或以编程方式在视图中添加它,例如:
self.view.insertSubview(self.webview, at: 0)
或
self.view.addSubview(self.webview)
你更喜欢哪一个
我在我的应用程序的本机部分做了一些事情。然后,当我从服务器获取 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
}
我得到的错误是
Thread 1: Fatal error: Unexpectedly found nil while implicitly unwrapping an Optional value
在 didFinish 函数处。为了播放 gif,我使用了这个 class
https://github.com/swiftgif/SwiftGif/blob/master/SwiftGifCommon/UIImage%2BGif.swift
感谢大家提前提供的帮助和建议。
您在以下 loadWeb()
方法的代码中犯了错误。
view=self.webview
以上代码将 nil 设置为放置在 view
内的所有其他控件。
而不是将 self.webView
分配给 view
,您应该从情节提要中添加它或以编程方式在视图中添加它,例如:
self.view.insertSubview(self.webview, at: 0)
或
self.view.addSubview(self.webview)
你更喜欢哪一个