Ios NVActivityIndicator仅针对特定视图查看

Ios NVActivityIndicator仅针对特定视图查看,ios,swift,swift3,uiwebview,uiactivityindicatorview,Ios,Swift,Swift3,Uiwebview,Uiactivityindicatorview,我使用这个库来显示加载指示器。默认情况下,它会阻止整个视图控制器,但如何仅显示特定视图的活动指示器。例如,如果视图控制器包含一个webview和一些其他视图,则活动指示器应该仅用于webview,并且我应该能够与其他视图交互 class FaqViewController: UIViewController, UIWebViewDelegate { @IBOutlet var faqWebView: UIWebView! static let activityData = Ac

我使用这个库来显示加载指示器。默认情况下,它会阻止整个视图控制器,但如何仅显示特定视图的活动指示器。例如,如果视图控制器包含一个webview和一些其他视图,则活动指示器应该仅用于webview,并且我应该能够与其他视图交互

class FaqViewController: UIViewController, UIWebViewDelegate
{

    @IBOutlet var faqWebView: UIWebView!
    static let activityData = ActivityData()
    var activityIndicator : NVActivityIndicatorView!

    override func viewDidLoad()
    {
        super.viewDidLoad()
        faqWebView.delegate = self
        faqWebView.loadRequest(URLRequest(url: URL(string: "https://www.google.com")!))
    }

    func webViewDidStartLoad(_ webView: UIWebView)
    {
        NVActivityIndicatorView.DEFAULT_BLOCKER_SIZE = CGSize(width: 45, height: 45)
        NVActivityIndicatorPresenter.sharedInstance.startAnimating(FaqViewController.activityData)
    }

    func webViewDidFinishLoad(_ webView: UIWebView)
    {
        NVActivityIndicatorPresenter.sharedInstance.stopAnimating()
    }
}

例如,显示
活动指示器

func webViewDidStartLoad(_ webView: UIWebView)
{
    //NVActivityIndicatorView.DEFAULT_BLOCKER_SIZE = CGSize(width: 45, height: 45)
    //NVActivityIndicatorPresenter.sharedInstance.startAnimating(FaqViewController.activityData)

    let xAxis = self.view.center.x // or use (view.frame.size.width / 2) // or use (faqWebView.frame.size.width / 2)
    let yAxis = self.view.center.y // or use (view.frame.size.height / 2) // or use (faqWebView.frame.size.height / 2)



let frame = CGRect(x: (xAxis - 50), y: (yAxis - 50), width: 45, height: 45)
 activityIndicator = NVActivityIndicatorView(frame: frame)
activityIndicator.type = . ballScale // add your type
activityIndicator.color = UIColor.red // add your color

self.view.addSubview(activityIndicator) // or use  webView.addSubview(activityIndicator)
activityIndicator.startAnimating()
}
隐藏

func webView(_ webView: UIWebView, didFailLoadWithError error: Error)
    {
        hideactivityIndicator()
    }

   func webViewDidFinishLoad(webView: UIWebView!)
    {
      hideactivityIndicator()
    }

  func hideactivityIndicator()
  {

  activityIndicator. stopAnimating()
  activityIndicator.removeFromSuperview()
  }

您必须将其添加为要在其上显示的视图的子视图。如果只想在UIWebView上显示,那么代码应该如下所示


self.faqWebView.addSubView(activityIndicator)

您的
UIWebView
框架到目前为止,它填充了整个视图。但我想在任何时候与导航控制器交互,以便在页面加载时返回。使用
let x=self.view.center.x let y=self.view.center.y let frame=CGRect(x:(x-50),y:(y-50),宽度:100,高度:100)nActivityIndicatorView更改您的
nActivityIndicatorView的框架(帧:帧)
我尝试了此操作,但现在加载指示器本身未显示。检查更新的回答我尝试了imageview的相同操作,但不起作用?我可以知道问题出在哪里吗。imageview是视图的子视图。imageview指的是保存UIImageha-ha-bro的UIImageView,imageview包含UIimage proerty,您尝试了什么ts您的概念我必须从服务器加载映像。在它加载之前,我必须单独在该特定视图中显示加载指示器。