2017-09-05 47 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的坐标。

相关问题