93 votes

Avantages, problèmes, exemples d’ajout d’un autre UIWindow à une application iOS?

Récemment, j'ai été de s'interroger sur le fait qu'une application iOS n'a qu'un seul UIWindow. Il ne semble pas être un problème pour créer un autre UIWindow et de la place sur l'écran.

Ma question est vague, mais je suis intéressé par:

  • Que pourrais-je permettre, un deuxième UIWindow qui ne peut pas être fait dans d'autres façons?
  • Ce qui peut aller mal lorsque vous utilisez plusieurs UIWindow instances?
  • J'ai vu que les gens utilisent un 2ème UIWindow à l'affichage de la liste comme point de vue sur l'iPhone. Est-ce un bon moyen de le faire? Pourquoi? Pourquoi pas?
  • Existe-il d'autres exemples où il fait parfaitement logique d'avoir un autre UIWindow?

C'est pas que je suis en manque de quelque chose. Je n'ai jamais ressenti le besoin de créer un autre UIWindow exemple, mais peut-être que ça permettrait de faire des choses étonnantes que je ne suis pas au courant! :-)

Je suis en espérant qu'il pourrait m'aider à résoudre ce problème: J'ai besoin d'ajouter une couverture de "vue" sur ce qui est actuellement affiché. Il convient également de travailler si il y a déjà un ou plusieurs modal contrôleurs présenté. Si j'ajoute une UIView à la racine du contrôleur de vue, le modal contrôleurs de s'asseoir sur le dessus, afin de faire la liste des contrôleurs. Si je vous présente le couvercle de vue modal et il y a déjà un modal contrôleur, seule une partie de l'écran est couvert.

111voto

Krumelur Points 11160

En commençant par Rob réponse que j'ai joué un peu et aimerais écrire quelques notes pour les personnes qui essaient d'obtenir des informations sur ce sujet:

  • Il n'est pas du tout un problème pour ajouter un autre UIWindow. Il suffit de créer un seul et makeKeyAndVisible. Fait.
  • L'enlever en faisant une autre fenêtre visible, puis relâchez-le une vous n'avez pas besoin de plus.
  • La fenêtre qui est "clé" reçoit toutes les entrées au clavier.
  • UIWindow couvre tout, même les auxiliaires modaux, popovers, etc. Génial!
  • UIWindow est toujours portrait implicitement. Il n'a pas de tourner. Vous aurez à ajouter un contrôleur comme la nouvelle fenêtre racine du contrôleur et de laisser que la rotation de la poignée. (Tout comme la fenêtre principale)
  • La fenêtre de niveau détermine la "haute", il s'affiche. Mis à UIWindowLevelStatusBar de l'avoir tout couvrir. Définir sa "caché" de propriété.
  • Un 2ème UIWindow peut être utilisé pour apporter des points de vue sur l'écran qui flottent au-dessus de tout. Sans la création d'un mannequin contrôleur juste pour l'incorporer dans un UIPopoverController.
  • Il peut être particulièrement utile sur iPhone, où il n'existe pas de liste responsable, mais si vous souhaitez imiter quelque chose comme ça.
  • Et oui, il a résolu mon problème: si l'application démissionne de ses fonctions d'activation, ajouter une fenêtre de couverture sur tout ce qui est actuellement affiché à l'écran pour éviter iOS de prendre une capture d'écran de votre application actuelle de contenu.

27voto

rob mayoff Points 124153

Un UIWindow peut flotter au-dessus des autres éléments d’interface utilisateur comme le clavier du système.

Pour répondre à votre dernier paragraphe : faire un UIWindow avec le même cadre que votre fenêtre principale. Affectez à sa propriété de windowLevel à UIWindowLevelStatusBar. Affectez à sa propriété cachée au no

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X