2016-08-03 84 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() 
    } 
}