无法在Swift 3中启动活动指标?

时间:2018-04-02 16:08:55

标签: ios swift webview uiactivityindicatorview

我是IOS的新手。我正在尝试在加载Web视图时实现活动指示器,但我无法做到这一点。虽然调试我遇到动画师正在启动但它没有显示。我使用的是swift 3.我的代码如下所示。请让我知道我做错了什么。如果有人有足够的资源来了解活动指标,请同时提及。

class ViewController: UIViewController,UIWebViewDelegate {

   var WebView: UIWebView!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        WebView = UIWebView(frame: UIScreen.main.bounds)
        WebView.delegate = self
        view.addSubview(WebView)
        if let url = URL(string: "https://apple.com")
        {
            let request = URLRequest(url: url)
            WebView.loadRequest(request)
        }
        activityindicator.startAnimating()
        activityindicator.color = UIColor.black
        activityindicator.alpha = 1
        activityindicator.isHidden = false

    }

   // weak var activityindicator: UIActivityIndicatorView!
    let activityindicator = UIActivityIndicatorView()

    func webViewDidStartLoad(_ webView: UIWebView)
    {
        activityindicator.startAnimating()
        activityindicator.color = UIColor.black
        activityindicator.alpha = 1
        activityindicator.isHidden = false


        UIApplication.shared.isNetworkActivityIndicatorVisible = true
    }

    func webViewDidFinishLoad(_ webView: UIWebView)
    {
        UIApplication.shared.isNetworkActivityIndicatorVisible = false
        activityindicator.stopAnimating()
        activityindicator.alpha = 0
        activityindicator.isHidden = true
    }

    func webView(webView: UIWebView, didFailLoadWithError error: NSError)
    {
        activityindicator.isHidden = true
    }
}

2 个答案:

答案 0 :(得分:2)

看起来活动指示符未添加到视图中。类似于我们如何添加webview,居中并在viewDidLoad中添加指标(下面的代码)。

activityindicator.center = self.view.center view.addSubview(activityindicator)

我还建议将全局声明移到一个地方。即移动指标声明let activityindicator = UIActivityIndicatorView(),在webview的下方,而不是在课堂中间。这有助于快速阅读。

答案 1 :(得分:0)

这是您的完整代码。现在它正在运作 -

import UIKit

class ViewController: UIViewController,UIWebViewDelegate {

    var WebView: UIWebView!

    override func viewDidLoad()
    {
        super.viewDidLoad()

        WebView = UIWebView(frame: UIScreen.main.bounds)
        WebView.delegate = self
        view.addSubview(WebView)
        if let url = URL(string: "https://apple.com")
        {
            let request = URLRequest(url: url)
            WebView.loadRequest(request)
        }
        activityindicator.startAnimating()
        activityindicator.center = self.view.center
        view.addSubview(activityindicator)
        activityindicator.color = UIColor.black
        activityindicator.alpha = 1   
    }
    // weak var activityindicator: UIActivityIndicatorView!
    let activityindicator = UIActivityIndicatorView()

    func webViewDidStartLoad(_ webView: UIWebView)
    {
        activityindicator.startAnimating()
        activityindicator.color = UIColor.black
        activityindicator.alpha = 1
        activityindicator.isHidden = false


        UIApplication.shared.isNetworkActivityIndicatorVisible = true
    }

    func webViewDidFinishLoad(_ webView: UIWebView)
    {
        UIApplication.shared.isNetworkActivityIndicatorVisible = false
        activityindicator.stopAnimating()
        activityindicator.alpha = 0
        activityindicator.isHidden = true
    }

    func webView(webView: UIWebView, didFailLoadWithError error: NSError)
    {
        activityindicator.isHidden = true
    }
}