Return动画函数

Return Animation Function

我想创建一个函数,以便我可以轻松地实现和修改我正在使用的加载动画。我不确定如何 return 正确显示我需要的所有内容。这是我用来创建它的代码:

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

是否可以编写一个函数来创建它,以便我可以在整个应用程序中多次使用它?大多数内容都在这个自定义应用程序的导航控制器中。

知道了,

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

成功了!

安装吊舱 吊舱 'NVActivityIndicatorView' 然后 在应用代表中 Class var window: 用户界面窗口? 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()

这是一个更简单的版本。我已经在 viewDidLoad() 中添加了所有内容,但是您可以创建一个新的单独函数来处理这个问题。

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

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