276 votes

Comment configurer l'iPhone UI View z index?

Je veux déplacer une vue l'une sur l'autre, comment puis-je connaître l'index z de la vue et comment passer au sommet? Je vous remercie.

346voto

Dan the Man Points 2162

Vous pouvez utiliser l' zPosition de la propriété de l'affichage de la couche (c'est un CALayer objet) pour modifier le z-index de la vue.

theView.layer.zPosition = 1;

Comme Viktor Nordling ajouté, "les grandes valeurs sont sur le dessus. Vous pouvez utiliser toutes les valeurs que vous voulez, y compris les valeurs négatives." La valeur par défaut est de 0.

Vous devez importer le QuartzCore cadre d'accéder à la couche. Il suffit d'ajouter cette ligne de code en haut de votre fichier de mise en oeuvre.

#import "QuartzCore/QuartzCore.h"

286voto

Nathan Eror Points 6713

UIView des frères et sœurs sont empilés dans l'ordre dans lequel ils sont ajoutés à leur superview. L' UIView de la hiérarchie des méthodes et propriétés sont là pour gérer l'ordre d'affichage. Dans UIView.h:

@property(nonatomic,readonly) UIView *superview;
@property(nonatomic,readonly,copy) NSArray *subviews;

- (void)removeFromSuperview;
- (void)insertSubview:(UIView *)view atIndex:(NSInteger)index;
- (void)exchangeSubviewAtIndex:(NSInteger)index1 withSubviewAtIndex:(NSInteger)index2;

- (void)addSubview:(UIView *)view;
- (void)insertSubview:(UIView *)view belowSubview:(UIView *)siblingSubview;
- (void)insertSubview:(UIView *)view aboveSubview:(UIView *)siblingSubview;

- (void)bringSubviewToFront:(UIView *)view;
- (void)sendSubviewToBack:(UIView *)view;

Le frère de vues sont classées de l'arrière vers l'avant dans l' subviews tableau. Donc, le premier point de vue sera:

[parentView.subviews lastObject];

et vue d'en bas seront:

[parentView.subviews objectAtIndex:0];

Comme Kolin Krewinkel dit, [parentView bringSubviewToFront:view] apportera le point de vue vers le haut, mais c'est seulement le cas si les points de vue sont tous des frères et sœurs dans la hiérarchie.

75voto

Kolin Krewinkel Points 838

[parentView bringSubviewToFront: view];

19voto

larspars Points 380

Si vous voulez le faire via Interface Builder de XCode, vous pouvez utiliser les options du menu sous Editeur-> Arrangement. Vous y trouverez "Send to Front", "Send to Back", etc.

4voto

Madhav Sbss Points 88

Si vous utilisez cocos2d, vous pouvez voir un problème avec [parentView bringSubviewToFront: view], au moins cela ne fonctionnait pas pour moi. Au lieu d'apporter la vue que je voulais au premier plan, j'ai renvoyé les autres points de vue et cela a fait l'affaire.

 [[[CCDirector sharedDirector] view] sendSubviewToBack:((UIButton *) button)]; 
 

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