2010-10-24 3 views
1

J'ai actuellement une interface utilisateur intégrée dans Interface Builder - il s'agit essentiellement d'une image de fond et de quelques étiquettes. J'ai besoin d'animer certains éléments (images) sous les étiquettes mais sur le fond, mais j'ai aussi besoin de les dessiner dans un ordre z spécifique. Je regardais autour de moi et je suis tombé sur CATransformLayer-- Je suis toujours à la recherche. Est-ce la meilleure façon de gérer l'ordre des images en Z afin de simuler la 3D? Je ne veux pas utiliser Open GL comme l'animation que je fais sera très simple 3D faux ...Modifier l'ordre de tirage de l'interface utilisateur sur l'iPhone

Répondre

2

Contexte:

sur iPhone, UIViews ont une sous-vue NSArray. La racine, une UIWindow est dessinée en premier, puis ses sous-vues dans l'ordre, puis leurs sous-vues. De plus, il existe une deuxième hiérarchie: chaque UIView possède un tableau CALayer. Le CALayer racine dessine d'abord, puis chaque CALayer dans l'ordre.

Suggestion:

Oui, vous pouvez le faire comme vous l'avez décrit. Toutefois, le code peut être un peu plus simple si vous procédez comme suit:

Dans votre cas spécifique, utilisez un UIView pour tenir l'arrière-plan. Donnez-lui deux sous-vues, initialement transparentes, en taille réelle, avec des ressorts et des entretoises dans Interface Builder pour conserver la taille totale de l'arrière-plan. Disposez-les dans la vue en plan d'Interface Builder (-0) de sorte que l'UIView ImageViewHolder soit répertorié avant UIView ButtonViewHolder. De cette façon, vous pouvez insérer et supprimer des UIImageViews de l'UIView ImageViewHolder, et ils seront dessinés au-dessus de l'arrière-plan, et en dessous des UIButtons.

+0

Merci! Donc, si j'ajoute 3 UIImageViews différents dans une vue ImageViewHolder, la vue que j'ajoute en dernier ou en premier dessine-t-elle dessus? Aussi, si la première vue que j'ai ajoutée dessine en bas, y a-t-il un moyen de la garder au-dessus? –

+0

- [addSubview:] le met à la fin, donc il dessine en dernier, mais UIView a des méthodes supplémentaires pour vous permettre de le mettre où vous le voulez dans l'ordre de tirage. N'utilisez pas les méthodes ordinaires NSMutableArray pour modifier le tableau de sous-vues, cependant. – DavidPhillipOster

+0

Merci pour votre aide. Il semble que je puisse utiliser des choses comme bringSubviewToFront pour faire ce que je veux :) –

Questions connexes