【问题标题】:Unable to start Activity Indicator in Swift 3?无法在 Swift 3 中启动活动指示器?
【发布时间】:2018-04-02 16:08:55
【问题描述】:

我是 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
    }
}

【问题讨论】:

  • 您将活动指示器指示器添加到视图的哪个位置?请注意,UIApplication.shared.isNetworkActivityIndicatorVisible 设置设备状态栏中活动指示器的状态,而不是您的微调器

标签: ios swift webview uiactivityindicatorview


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    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
        }
    }
    

    【讨论】:

    • 请不要发布仅代码的答案。一个好的答案解释了问题所在,并解释了答案如何解决问题。
    猜你喜欢
    • 2017-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多