Comment afficher l'indicateur d'activité dans le centre de UIAlertController?
J'ai actuellement un UIAlertController
affichée sur l'écran. Le point de vue de l'alerte doit afficher seulement 2 éléments, un titre et un UIActivityIndicatorView
dans le centre de l'alerte. Ci-dessous est la fonction qui affiche l'alerte et de ses éléments.
func displaySignUpPendingAlert() -> UIAlertController {
//Create the UIAlertController
let pending = UIAlertController(title: "Creating New User", message: nil, preferredStyle: .Alert)
//Create the activity indicator to display in it.
let indicator = UIActivityIndicatorView(frame: CGRectMake(pending.view.frame.width / 2.0, pending.view.frame.height / 2.0, 20.0, 20.0))
indicator.center = CGPointMake(pending.view.frame.width / 2.0, pending.view.frame.height / 2.0)
//Add the activity indicator to the alert's view
pending.view.addSubview(indicator)
//Start animating
indicator.startAnimating()
self.presentViewController(pending, animated: true, completion: nil)
return pending
}
Toutefois, l'activité de l'indicateur ne s'affiche pas dans le centre de la vue, en fait, il s'affiche dans le coin inférieur droit de l'écran, loin de la vue. Quelle est la raison?
EDIT: je comprends que je peux coder en dur des chiffres de l'indicateur de position, mais je veux l'alerte de travailler sur plusieurs appareils avec plusieurs tailles d'écran et les orientations.
OriginalL'auteur Satre | 2014-11-20
Vous devez vous connecter pour publier un commentaire.
Assurez-vous de définir le cadre de la propriété lorsque vous êtes à la création d'une vue.
À @62Shark:
Salut @62Shark, j'ai mis à jour ma réponse et espère que cela va vous aider.
Swipesight,il montrent parfaitement comme je le voulais maintenant, monsieur.Je vous remercie pour votre réponse.
Vous pouvez aussi m'aider ici,si u ne pas l'esprit.J'ai quelques problème avec l'appel de mon alerte personnalisée à partir d'un autre point de vue contrôleur.Voici mon lien : stackoverflow.com/questions/30837238/...
C'est une mauvaise réponse qui n'est pas du tout dans l'avenir. Faire ce que @catlan suggère: stackoverflow.com/a/48730050/543
OriginalL'auteur ylin0x81
J'ai converti la réponse à Objective-C, si quelqu'un est intéressé:
Acclamations
Objective-C
, c'est très utile.Pouvez-vous expliquer les contraintes de s'il vous plaît?
travail parfait. ce code pour faire disparaître après le chargement des données se fait. [auto dismissViewControllerAnimated:PAS de fin:nil];
OriginalL'auteur Dimitris F.
tl;dr
Toutes les autres réponses sont 🙂 Voir la documentation:
Problème
Le problème n'est pas la UIAlertController. C'est un très simple de l'INTERFACE utilisateur, un empilervoir ou deux en fonction de si vous voulez le UIActivityIndicatorView gauche de l'étiquette du titre ou sous le titre. La présentation de l'animation est ce que nous voulons.
Le code ci-dessous est basée sur la WWDC session Un Coup D'Oeil À L'Intérieur De Présentation Des Contrôleurs.
Recréer La Présentation De Contrôleur:
D'Animation De La Transition:
Échantillon
UIViewController
sous-classe, assaisonner au goût avec du XIB:D'Enregistrement D'Écran
Rapporteur De Bug
rdar://37433306: Faire UIAlertController présentation du contrôleur et de la transition délégué API publique pour faciliter la réutilisation.
plus drôle, c'est le fait que vous louez une réponse dans un autre langage de programmation que l'OP demande.
OriginalL'auteur catlan
Pour ceux qui comme moi préfèrent
UIActivityIndicatorView
aligné à gauche de laUIAlertController.title
, c'est ma solution dans Swift de travail pour tous les appareils:Toutefois, afin d'aligner le
UIActivityIndicatorView
dans le centre de la vue vous pouvez modifier comme suit:OriginalL'auteur Francesco Vadicamo
Apple n'encourage pas directement de sous-classement UIAlertController donc j'ai fait une classe qui affiche UIAlertController avec centrée UIActivityIndicator et gère la condition d'annulation avec une classe de protocole.
Je recommande d'utiliser paresseux var pour initialiser la classe.
Voici un lien vers un exemple de code: https://github.com/cgilleeny/BusyAlertExample.git
OriginalL'auteur Caroline Gilleeny
Bien essayer ce code.
bien u peut ajouter à cela [chargeur de setCenter:vue.center];
Sera cette compilation? Quel est ce ligne [alerte.vue loader]?
OriginalL'auteur iAnurag
Dans swift:
Si vous avez une barre d'outils ou un navController vous pourriez vouloir déplacer le point mais sinon, centre est, centre...
Si vous avez encore des questions, peut-être cette tutoriel pourrait l'aider. Si vous essayez de le centrer dans une table view controller, cette réponse pourrait aider.
OriginalL'auteur goggelj
- Je mettre en place
NSLayoutConstraint
s pour mettre leUIActivityIndicatorView
sur le centre de laUIAlertController
Pour Swift 3:
OriginalL'auteur pableiros
Essayez ceci:
Aussi, vous aurez besoin de vérifier pour le mode paysage et à l'inverse de la largeur et de la hauteur.
Peut-être que vous pouvez obtenir de l'alerte position de la vue?
et de l'utiliser à la place de votre activité d'afficher dynamiquement, c'est à dire avec les variables?
Bien sûr, vous pouvez également obtenir la taille de diviser par 2 et ajouter que, de sorte que son centrée.
Où est-elle?
L'alerte s'afficher dans le centre, mais le voyant d'activité est proche du bas de l'écran, presque dans le coin.
Oh désolé mon mal je pensais que vous parliez de l'alerte de vue n'était pas dans le centre. Juste au centre de l'activité de l'affichage à l'écran principal, il devrait être sur le dessus de cela.
OriginalL'auteur AMAN77
J'ai eu le même problème et à l'aide de cadre de positionnement ne fonctionne pas pour moi.
Yimin la réponse de Lin était très proche de moi, mais je voulais juste présenter une alternative en utilisant des contraintes de non-format visuel:
OriginalL'auteur mad_manny
Converti @petesalt la réponse de Swift 3:
OriginalL'auteur Hajji Daoud