web-dev-qa-db-fra.com

Constructeur d'interface iPhone: Z-Index, Z-ordre d'un bouton, image, élément ui, etc?

Je traîne des choses dans l'Interface Builder ... Je voudrais spécifier si une image est devant (comme un indicateur) ou derrière un bouton (comme un arrière-plan). Je ne vois aucune propriété z-index comme j'ai l'habitude de voir sur d'autres environnements. S'il n'y a pas de propriété z-index, quelle est la meilleure façon de faire ce que j'essaie d'accomplir? Merci!

61
foreyez

J'ai atteint ce que je voulais en cliquant sur un élément de l'interface utilisateur (bouton, image, texte, etc.) et en allant dans le menu Mise en page (en haut de l'écran), puis j'ai utilisé "mettre en avant", "envoyer en arrière", etc. .

Dans Xcode 4.2, vous trouverez les options dans le menu en haut: Editeur-> Arranger

85
foreyez

Il existe un ordre Z sans utiliser de sous-vues. D'une part, il existe des options de menu pour "envoyer vers l'avant" et "envoyer vers l'arrière". Cependant, si vous regardez les éléments dans votre vue comme une arborescence d'éléments, vous pouvez les réorganiser là-bas (plutôt que dans la vue elle-même) simplement en les faisant glisser.

Les sous-vues sont idéales pour le regroupement, mais pas aussi utiles pour la commande (sauf que l'ensemble du "jeu" reste au même niveau).

24

Dans le développement XCode, un élément d'interface utilisateur, ou "vue" se trouve devant une autre vue lorsqu'il s'agit d'une sous-vue de cette vue. Par exemple, si la vue B est un arrière-plan et la vue C est un contrôle, pour placer le contrôle au-dessus de l'arrière-plan (c'est-à-dire plus près de l'utilisateur), vous feriez de la vue C une sous-vue de la vue B. Dans Interface Builder, cela se fait en faire glisser le contrôle dans l'arrière-plan.

Essentiellement, vous regardez une arborescence, avec les vues en arrière-plan près de la racine de l'arbre et les vues au premier plan (plus près de l'utilisateur) près des feuilles de l'arbre.

Le document Windows and Views de la documentation pour développeurs Apple d'Apple peut aider à clarifier les choses.

Remarque 1: Vous ne devez presque jamais chevaucher des contrôles individuels, tels que des boutons et des champs de texte. Cela va à l'encontre des directives de l'interface utilisateur d'Apple. Vous pouvez, bien sûr, continuez à le faire si vous le souhaitez, mais vous devez être conscient que vous sortez de la zone de sécurité. Si vous écrivez simplement une application iPhone "normale", votre meilleur pari est de vous en tenir à la façon de faire d'Apple.

Remarque 2: Si, pour une raison quelconque, vous avez besoin que les choses se chevauchent d'une manière spécifique, vous pouvez utiliser CALayer = objets pour garder tout bien ordonné. Les objets CALayer font partie de la technologie Core Animation d'Apple.

13
e.James

Dans le générateur d'interface XCode 4.6, affichez le "Document Outline" par le menu (Editor-> Show Document Outline) ou en cliquant sur le bouton translucide dans le coin inférieur gauche du canevas. Sous la liste "Objets", l'ordre Z des vues est affiché et l'utilisateur peut les faire glisser pour changer l'ordre entre eux. Plus le bas de l'écran est proche, plus cet élément est "proche" de l'utilisateur.

11
Eric Colton

Je sais que c'est une vieille question, mais dans xcode 4.6, je peux simplement faire glisser des éléments de haut en bas dans la liste de gauche. Plus l'élément est bas dans la liste, plus il est proche de l'utilisateur, par ex. l'élément inférieur de la liste sera toujours visible, sauf s'il est hors de l'écran. Je ne sais pas quand cela a été mis en œuvre, mais cela semble plus facile que les autres réponses.

3
Kevin

Dans Swift:

Dans la vue que vous souhaitez mettre en haut

     superview?.bringSubviewToFront(self)
2
Mr. Tann

Ce qui a fonctionné pour moi, c'était de le faire en code:

self.view.sendSubviewToBack(imageView);

Je ne sais pas pourquoi mais aucune des autres réponses ne l'a corrigé pour de bon. J'ai mis la ligne ci-dessus dans la méthode viewDidLoad.


1
user4401104