【问题标题】:How to show SVProgressHUD while loading a link inside iOS WebView如何在 iOS WebView 中加载链接时显示 SVProgressHUD
【发布时间】:2021-11-28 10:21:10
【问题描述】:

我试图在 WebView 中加载链接时显示 SVProgressHUD,换句话说,我有一个包含链接的 WebView,我想在点击该链接时显示 SVProgressHUD。

这是我的 webiew 代码:

class ViewController: UIViewController, WKNavigationDelegate {
    @IBOutlet weak var webView:WKWebView?

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        setNeedsStatusBarAppearanceUpdate()
    }
    override var preferredStatusBarStyle: UIStatusBarStyle {
        .lightContent
    }

    override func viewDidLoad()
    {

        super.viewDidLoad()

   
        webView?.navigationDelegate = self
        //webView?.addSubview(Spinner)
        SVProgressHUD.show(withStatus: ("Loading ..."))
        SVProgressHUD.setBackgroundColor(#colorLiteral(red: 0.3466703892, green: 0.7427461743, blue: 0.6237300038, alpha: 1))
        SVProgressHUD.setForegroundColor(#colorLiteral(red: 1, green: 1, blue: 1, alpha: 1))
        SVProgressHUD.setMinimumSize(CGSize(width: 120, height: 120))
        SVProgressHUD.setRingThickness(7.0)
        SVProgressHUD.setRingRadius(CGFloat(40.0))

        let request = URLRequest(url: URL(string: "https://luhom-app.com/")!)
        webView?.load(request)

        let refreshControl = UIRefreshControl()
        refreshControl.addTarget(self, action: #selector(reloadWebView(_:)), for: .valueChanged)
        refreshControl.backgroundColor = #colorLiteral(red: 0.3466703892, green: 0.7427461743, blue: 0.6237300038, alpha: 1)
        webView?.scrollView.addSubview(refreshControl)
    }
    

    @objc func reloadWebView(_ sender: UIRefreshControl) {
        webView?.reload()
        SVProgressHUD.show(withStatus: ("Refreshing ..."))
        sender.endRefreshing()
        
    }
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
        DispatchQueue.main.async {
    
        SVProgressHUD.showSuccess(withStatus: ("Done!"))
        SVProgressHUD.dismiss()
        }
        
    }

    
}

请问有什么帮助吗?

【问题讨论】:

    标签: ios swift webview svprogresshud


    【解决方案1】:
    private func loadWebView(with url: String){
        
        guard let URL = URL(string: url) else {return}
        
        var request = URLRequest(url: URL)
        request.httpMethod = "GET"
        request.timeoutInterval = 10.0
        request.addValue("application/x-www-form-urlencoded", forHTTPHeaderField: "Content-Type")
        
        webView.navigationDelegate = self
        webView.scrollView.showsVerticalScrollIndicator = false
        webView.scrollView.showsHorizontalScrollIndicator = false
        showProgressHUD()
        webView.load(request)
        
    }
    
    extension WebViewVC: WKNavigationDelegate{
        
        func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
            // Hide LoadingView
            // Show ErrorView
        }
        func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
            // Hide LoadingView
        }
        
        func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) {
            // Hide LoadingView
            // Show ErrorView
        }
    }
    
    • 您的 viewController 需要符合 webViews 导航协议/委托。

    【讨论】:

    • 感谢您的回答,当我尝试将其应用于我的代码时,您能否检查这些问题:i.ibb.co/8BrsDpY/SO-1443-03-02-at-4-36-16-PM.png
    • progressHUD pod 有问题。还有一件事,删除重复的方法。如果你还有点心,可以给我来自 GITHUB 或 WeTransfer 的代码链接。
    猜你喜欢
    • 2019-05-19
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多