2017-10-09 7 views
0

Comment afficher un indicateur d'activité et un arrière-plan blanc alors que les données de ma collection sont chargées?Afficher l'indicateur d'activité pendant le chargement des données dans collectionView Swift

J'ai actuellement ceci:

let activityView = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge) 
override func viewDidAppear(_ animated: Bool) { 

    super.viewDidAppear(animated) 
    self.view.addSubview(activityView) 
    activityView.hidesWhenStopped = true 
    activityView.center = self.view.center 
    activityView.startAnimating() 

    DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async { 
     fetchPosts() 
    } 

    DispatchQueue.main.async { 
     UIView.animate(withDuration: 1, delay: 1, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseInOut, animations: { 
      self.collectionView?.reloadData() 
      self.collectionView?.alpha = 1 
      self.activityView.stopAnimating() 
     }, completion: nil) 
    } 
} 
+0

Vous pouvez modifier le [ 'color'] (https://developer.apple.com/ documentation/uikit/uiactivityindicatorview/1622836-color) de 'UIActivityInidicatorView' à quelque chose d'autre que blanc. – Paolo

Répondre

0

Essayez cette J'espère que cela vous aidera

let activityView = UIActivityIndicatorView(activityIndicatorStyle: .whiteLarge) 

override func viewDidAppear(_ animated: Bool) { 

    super.viewDidAppear(animated) 

    let fadeView:UIView = UIView() 
    fadeView.frame = self.view.frame 
    fadeView.backgroundColor = UIColor.whiteColor() 
    fadeView.alpha = 0.4 

    self.view.addSubview(fadeView) 

    self.view.addSubview(activityView) 
    activityView.hidesWhenStopped = true 
    activityView.center = self.view.center 
    activityView.startAnimating() 

    DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async { 
    fetchPosts() 
    } 

    DispatchQueue.main.async { 
    UIView.animate(withDuration: 1, delay: 1, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: .curveEaseInOut, animations: { 
     self.collectionView?.reloadData() 
     self.collectionView?.alpha = 1 
     fadeView.removeFromSuperview() 
     self.activityView.stopAnimating() 
    }, completion: nil) 
} 
}