2016-08-03 49 views
0

我想创建一个函数,以便我可以轻松实现并对正在使用的加载动画进行修改。我不知道如何将我需要的所有东西都正确地返回并显示出来。下面是我用来创建它的代码:返回动画功能

 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() 

是否有可能写入可能会创建这样我可以在整个应用程序就多时间的函数?这个自定义应用程序的大部分内容都在导航控制器中。

+0

究竟是你在创建什么? loadingUI和loadingBackground? –

+0

是的,这是正确的。这就是我需要创建出现在屏幕上。 – trever

回答

0

明白了,

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

的伎俩!

+0

不错!我要去推荐一个元组haha –

+0

谢谢!我从来没有这样做过! – trever

0

安装荚荚 'NVActivityIndi​​catorView' 然后 在应用程序委托类 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

这里是一个容易和简单的版本。我已经在viewDidLoad中()添加的一切,但是你可以做一个新的独立的功能,照顾这。

我已将默认加载器类型更改为ballClipRotateMultiple,并将默认颜色更改为蓝色。由于负载的颜色也是白色,所以请更改装载机的颜色或颜色。

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