2017-09-05 79 views
0

我一直在嘗試創建一個快速方法,允許我在進程啓動之前用旋轉器替換任何UIView,並在完成過程後重新顯示視圖。出於某種原因,UIView確實消失了,但微調從不顯示。這些問題的方法:以編程方式替換UIActivityIndi​​cator的視圖

func showLoader(view: UIView, controller: UIViewController) -> UIActivityIndicatorView { 

    let spinner = UIActivityIndicatorView(activityIndicatorStyle: .gray) 
    spinner.color = AC_BLUE 
    spinner.center = view.center 
    spinner.startAnimating() 

    view.alpha = 0 
    controller.view.addSubview(spinner) 

    return spinner 
} 

func hideLoader(view: UIView, spinner: UIActivityIndicatorView) { 

    view.alpha = 1 
    spinner.removeFromSuperview() 

} 

..這我的東西叫這樣的:

let spinner = Extensions().showLoader(view: signInBtn, controller: self) 

APICalls().getUser(email: usernameTextField.text!, pass: passwordTextField.text!) { success, user in 

    //..CODE..// 
    Extensions().hideLoader(view: self.signInBtn, spinner: spinner) 

} 

而且,我想圍繞主VC觀點,並認爲確實工作。所以我猜猜它一定與視圖的位置有關。

謝謝!

+0

看來你正在將'spinner'添加到視圖中。然後你設置的視圖有一個'0'的alpha,這意味着視圖的'subview'的任何東西都會有一個'0'的字母。 – zsteed

+0

不,我將它添加到控制器的主視圖(又名.control.view ...) –

+0

您是否嘗試過使用「Capture View Hierarchy」來查看它是否在屏幕上可見? – zsteed

回答

1

嘗試添加微調器控制器視圖(而不是舊的spinner.center = view.center)之前設置這樣的:

spinner.center = view.superview!.convert(view.center, to: controller.view) 

你需要轉換的viewcentercontroller.view的座標。

相關問題