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.
Réponses
Trop de publicités?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"
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.
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)];