返回动画函数



我想创建一个函数,这样我就可以轻松地实现并修改我正在使用的加载动画。我不知道如何正确地返回我需要的一切并将其显示出来。这是我用来创建它的代码:

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

有没有可能写一个函数来创建它,这样我就可以在整个应用程序中多次使用它?大多数东西都在这个自定义应用程序的导航控制器中。

这里有一个更简单的版本。。我已经在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()
    }
}

明白了,

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

成功了!

安装podpod"NVActivityIndicatorView"然后应用内委派类var window: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()

最新更新