2016-08-03 2 views
0

Je souhaite créer une fonction pour pouvoir facilement implémenter et modifier une animation de chargement que j'utilise. Je ne suis pas sûr de savoir comment retourner tout ce dont j'ai besoin pour l'afficher correctement. Voici le code que je l'habitude de créer:Retour Fonction d'animation

 let x = (self.view.frame.size.width/2) 
     let y = (self.view.frame.size.height/2) 
     self.loadingUI = NVActivityIndicatorView(frame: CGRectMake(x, y, 100, 100)) 
     self.loadingUI.center = CGPointMake(view.frame.size.width/2, 
             view.frame.size.height/2) 
     self.loadingBackground.backgroundColor = UIColor.lightGrayColor() 
     self.loadingBackground.frame = CGRectMake(0, 0, 150, 150) 
     self.loadingBackground.center = (self.navigationController?.view.center)! 
     self.loadingBackground.layer.cornerRadius = 5 
     self.loadingBackground.layer.opacity = 0.5 
     self.navigationController?.view.addSubview(loadingBackground) 
     self.navigationController?.view.addSubview(loadingUI) 
     self.loadingUI.type = .BallRotateChase 
     self.loadingUI.color = UIColor.whiteColor() 
     self.loadingUI.startAnimation() 

Est-il possible d'écrire une fonction qui créeraient que pour que je puisse l'utiliser de temps multiples tout au long de l'application? La plupart sont dans un contrôleur de navigation pour cette application personnalisée.

+0

Que créez-vous exactement? le chargementUI et loadingBackground? –

+0

Oui c'est correct. C'est ce que j'ai besoin de créer pour apparaître sur l'écran. – trever

Répondre

0

a obtenu,

func loadingAnimation(loadingUI : NVActivityIndicatorView?, loadingBG : UIView, view : UIView, navController : UINavigationController) -> (NVActivityIndicatorView, UIView) { 
    var loadUI = loadingUI 
    var loadBG = loadingBG 
    let x = (view.frame.size.width/2) 
    let y = (view.frame.size.height/2) 
    loadUI = NVActivityIndicatorView(frame: CGRectMake(x, y, 100, 100)) 
    loadUI!.center = CGPointMake(view.frame.size.width/2, 
           view.frame.size.height/2) 

    loadBG.backgroundColor = UIColor.lightGrayColor() 
    loadBG.frame = CGRectMake(0, 0, 150, 150) 
    loadBG.center = navController.view.center 
    loadBG.layer.cornerRadius = 5 
    loadBG.layer.opacity = 0.5 
    navController.view.addSubview(loadBG) 
    navController.view.addSubview(loadUI!) 

    loadUI!.type = .BallRotateChase 
    loadUI!.color = UIColor.whiteColor() 
    loadUI!.startAnimation() 

    return (loadUI!, loadBG) 
} 

a fait l'affaire!

+0

Nice! J'allais suggérer un tuple haha ​​ –

+0

Merci! Je n'avais jamais eu à le faire avant! – trever

0

installer pod pod 'NVActivityIndicatorView' puis Dans App délégué de classe fenêtre var: UIWindow? var = objNVLoader NVLoader()

class func getDelegate() -> AppDelegate 
    { 
     return UIApplication.shared.delegate as! AppDelegate 
    } 

then did finish lunch method add 
     self.window = UIWindow(frame: UIScreen.main.bounds) 

then 

func showLoader() 
    { 
     self.window?.rootViewController!.addChildViewController(objNVLoader) 
     self.window?.rootViewController!.view!.addSubview(objNVLoader.view!) 

     objNVLoader.didMove(toParentViewController: self.window?.rootViewController!) 

     objNVLoader.view.frame=Constants.kScreenBound 
     self.window?.isUserInteractionEnabled = false 
     objNVLoader.showLoader() 
    } 

    func dismissLoader(){ 
     objNVLoader.removeFromParentViewController() 
     objNVLoader.didMove(toParentViewController: nil) 
     objNVLoader.view.removeFromSuperview() 
     self.window?.isUserInteractionEnabled = true 
     objNVLoader.dismissLoader() 
    } 


then 

       AppDelegate.getDelegate().showLoader() 
         AppDelegate.getDelegate().dismissLoader() 
1

Voici une version plus facile et plus simple .. J'ai ajouté tout en viewDidLoad(), mais vous pouvez faire une nouvelle fonction séparée pour prendre soin de cela.

J'ai changé le type de chargeur par défaut en ballClipRotateMultiple et la couleur par défaut en bleu. Comme la couleur de la charge est également blanche, changez la couleur bg ou la couleur du chargeur.

import NVActivityIndicatorView 

class ViewController: UIViewController, NVActivityIndicatorViewable { 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 

    let x = self.view.center.x 
    let y = self.view.center.y 

    let frame = CGRect(x: (x - 50), y: (y - 50), width: 100, height: 100) 
    let activityIndicatorView = NVActivityIndicatorView(frame: frame) 
    activityIndicatorView.type = .ballClipRotateMultiple 
    activityIndicatorView.color = UIColor.blue 

    self.view.addSubview(activityIndicatorView) 
    activityIndicatorView.startAnimating() 
    } 
}