ios - 我无法加载动画,并且在加载请求后无法将其删除

标签 ios swift wkwebview gif

我在应用程序的 native 部分做了一些事情。然后,当我从服务器获取 sessionID 时,我将其设置为 WKWebView。然后,我将网页加载到 webview 本身。问题是,我使用了名为“didfinish”的函数来播放 gif。该函数有效,每次都会调用它,但是当我试图停止 gif 时,它对我的​​ ImageView 显示为零。

我将 ImageView 放在 View 之上,该 View 覆盖了WKWebview,用户在完全加载之前不会看到空白 View 。

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,我使用了这个类

https://github.com/swiftgif/SwiftGif/blob/master/SwiftGifCommon/UIImage%2BGif.swift

感谢各位提前提供的帮助和建议。

最佳答案

您在 loadWeb() 方法的以下代码中犯了错误。

view=self.webview

上面的代码会将 view 中放置的所有其他控件设置为 nil。 您不应将 self.webView 分配给 view,而是应该从 Storyboard 添加它,或者以编程方式在 View 中添加它,如下所示:

self.view.insertSubview(self.webview, at: 0)

或者

self.view.addSubview(self.webview)

您更喜欢哪一个。

关于ios - 我无法加载动画,并且在加载请求后无法将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57707166/

相关文章:

ios - 如何将 Storyboard中的 subview 添加到 swift 4 代码中的另一个 View ?

swift - RxSwift 和 MVVM : observable not executing without binding

ios - 如何清除 UIWebView/WKWebView 的内容?

ios - 如何刷新 UITableView 中的单节标题文本

ios - 使用 Swift 将 JSON 字符串转为 NSDictionary

ios - Swift 通知 - 触发日期后的重复间隔

ios - 动态(通用)快速继承自 <T>

ios - WKWebView 和 UIMenuController

ios - 强制WKWebView显示移动版本

iphone - iOS 应用程序和 Windows 身份验证