J'ai essayé de créer une méthode rapide qui me permettra de remplacer n'importe quel UIView par un spinner juste avant qu'un processus ne commence et de montrer à nouveau la vue une fois mon processus terminé. Pour une raison quelconque, l'UIView disparaît mais le spinner ne se montre jamais. Ce sont les méthodes en question:Remplacement d'une vue avec un UIActivityIndicator par programme
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()
}
..which j'appelle avec quelque chose comme ceci:
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)
}
Aussi, j'ai essayé centrant sur l'écran principal de VC, et qui fonctionne. Donc je devine que cela doit être lié à la position de la vue.
Merci!
Il semble que vous ajoutez le 'spinner' à la vue. Ensuite, vous configurez la vue pour avoir un alpha de '0' qui signifie que tout ce qui est une' sous-vue 'de la vue aura aussi un alpha de '0'. – zsteed
Non, je l'ajoute à la vue principale du contrôleur (aka .. controller.view ...) –
Avez-vous essayé d'utiliser la 'View View Hierarchy' pour voir si elle est visible sur l'écran n'importe où? – zsteed