1 votes

Meilleur moyen de faire en sorte qu'une vue s'étende temporairement pour remplir l'écran de l'iPhone

J'ai une bibliothèque qui construit de manière programmatique un UIView qui présente mon comportement personnalisé. Cette bibliothèque peut être déposée dans de nombreuses applications différentes, à différents endroits de la hiérarchie des vues. Dans certaines circonstances, la vue doit être "étendue" pour remplir l'écran. Pour ce faire, mon code parcourt actuellement la hiérarchie des vues jusqu'à ce que je trouve une vue sans parent, construise une nouvelle vue et l'insère en tant que sous-vue de la vue trouvée, puis effectue une transition animée entre les deux. Pour quitter cette nouvelle vue, il suffit de la cacher, ce qui rétablit l'état précédent.

J'ai deux questions.

  1. Y a-t-il une meilleure façon de procéder ? (En particulier, je n'aime pas vraiment traverser la hiérarchie des vues de cette façon).
  2. Quelles mauvaises choses peuvent se produire avec cette approche ? Une chose qui pourrait mal tourner, par exemple, est que la vue qui était précédemment affichée ne sait pas que cela s'est produit et peut donc se comporter de manière erratique. (Cela pourrait être résolu en inventant un protocole de délégation pour ce comportement ou en utilisant un protocole existant que je ne connais pas actuellement).

L'objectif est évidemment de faire en sorte que l'application/la vue/le contrôleur qui la contient ait à faire le moins de choses possible, à part créer un rectangle et construire le contrôleur de ma vue.

1voto

Andrew Grant Points 35305

Pourquoi ne pas simplement appeler presentModalViewController ? Par défaut, il s'anime à l'écran à partir du bas, mais vous pouvez empêcher cela en passant NO comme option d'animation et en contrôlant ensuite votre propre animation.

Il s'agit du moyen conçu pour qu'une vue/contrôleur/application cède temporairement le contrôle de l'interface utilisateur à un autre module.

1voto

Brent Royal-Gordon Points 8044

Andrew, je suppose qu'il ne fait pas ça parce qu'il ne veut pas de l'animation de glissement.

La vue de premier niveau est une UIWindow ; vous pouvez obtenir la fenêtre clé (actuelle) en appelant [UIApplication sharedApplication].keyWindow . (Presque toutes les applications n'ont qu'une seule fenêtre.) A part cela, remonter la hiérarchie des vues est parfaitement légitime.

EDIT : Je viens de remarquer que UIView a un window qui vous mènera directement à la fenêtre de la vue, de sorte que vous n'avez pas besoin de parcourir la hiérarchie après tout.

Pour ce qui est des effets négatifs, je n'en vois pas vraiment, à moins qu'une autre partie de l'application décide d'ajouter ou de supprimer les sous-vues directes de la fenêtre clé. Un autre problème possible pourrait être qu'un champ de texte soit le premier à répondre lorsque vous ajoutez votre vue ; le clavier puede Restez à l'affût.

0voto

Adam Points 194

Ddoughty,

J'ai réalisé un tutoriel youtube montrant comment agrandir et réduire les vues comme dans l'application iPhone de Facebook.

J'espère que cela pourra vous être utile : Comment faire des vues en expansion/réduction sur le SDK de l'iPhone ?

Adam

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