美文网首页
WKWebView 白屏

WKWebView 白屏

作者: 西风那个吹呀吹 | 来源:发表于2022-09-06 20:38 被阅读0次

项目中遇到的问题

第一种:URL中出现特殊字符 '=' 等,需要编码

let url = URL(string: safeString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? "")

第二种:iPhone中打开所有网页都正常,但ipad中打开某些网页正常,某些网页白屏,如https://www.baidu.com就白屏

let config = WKWebViewConfiguration()
config.defaultWebpagePreferences.preferredContentMode = .mobile
let wk = WKWebView(frame: UIScreen.main.bounds, configuration: config)

整体代码:

struct CoscoWebView: UIViewRepresentable {
    typealias UIViewType = WKWebView
    
    let urlString: String?
    
    func makeUIView(context: Context) -> WKWebView {
        
        let config = WKWebViewConfiguration()
        // 不做此配置设置, 大多数网页是可以正常打开的
        // 但对于百度官网,会出现手机可以打开而ipad白屏(不断的在代理方法didStart 和 didFinish之间循环)
        config.defaultWebpagePreferences.preferredContentMode = .mobile
        
        let wk = WKWebView(frame: UIScreen.main.bounds, configuration: config)
        // 设置代理
        wk.navigationDelegate = context.coordinator
        
        return wk
    }
    
    func updateUIView(_ uiView: WKWebView, context: Context) {
        if let safeString = urlString {
            // 路径中出现某些特殊字符(如 = 等...),会返回nil,此处需要编码
            if let url = URL(string: safeString.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) ?? "") {
                let request = URLRequest(url: url)
                uiView.load(request)
            }
        }
    }
    
    func makeCoordinator() -> Coordinator {
        Coordinator()
    }
}
extension CoscoWebView {
    
    class Coordinator: NSObject, WKNavigationDelegate {
        
        func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {

        }
        
        func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
            print(error)
        }
        
        func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
            
        }
    }
}

上面第二种问题,有知道原因的麻烦评论区贴一下,互相学习

相关文章

  • WKWebView白屏原因及其解决方案

    白屏场景 加载到WKWebView页面后,前/后台来回切换APP。 白屏原因 WKWebView是一个多进程组件,...

  • WKWebview 白屏

    WKWebview页面突然白屏问题 页面突然白屏可能是由于加载资源过大,内存不足,导致webview的进程被程序终...

  • WKWebView 白屏

    项目中遇到的问题 第一种:URL中出现特殊字符 '=' 等,需要编码let url = URL(string: s...

  • WKWebView的 开发坑

    1、WKWebView 白屏问题WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebV...

  • WKWebView的 开发坑

    1、WKWebView 白屏问题WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebV...

  • WKWebView那些坑

    1、WKWebView白屏问题 WKWebView自诩拥有更快的加载速度,更低的内存占用,但实际上WKWebVie...

  • WKWebView开发中遇到的坑

    1.WKWebView白屏问题 WKWebView自我拥有更快的加载速度,更低的内存占用,但实际上WKWebVie...

  • 项目中WKWebview 暂时未解决问题

    问题1 WKWebView 加载白屏问题 Could not signal service com.apple.W...

  • wkwebview白屏问题

    【腾讯Bugly干货分享】WKWebView 那些坑 - 腾讯Bugly的专栏 - CSDN博客

  • WKWebView 白屏问题

    WKWebView的推出, 解决了很多UIWebView 的问题。比如加载速度慢,内存泄露等问题。WKWebVie...

网友评论

      本文标题:WKWebView 白屏

      本文链接:https://www.haomeiwen.com/subject/mecwnrtx.html