2009-11-19 2 views
0

Y at-il un moyen de faire pivoter les boutons sur un UIToolBar comme le fait l'application de caméra lorsque vous prenez une photo en mode paysage?Rotation des boutons sur UIToolBar dans une application iPhone

Lorsque l'utilisateur fait pivoter l'iPhone, je souhaite que la barre d'outils reste au même endroit et que les boutons ne pivotent pas.

merci d'avance!

+0

Voulez-vous dire la barre d'outils se creuse avec la rotation, mais reste sur le côté gauche ou à droite de l'écran? Ou voulez-vous dire que le texte du bouton tourne et que le bouton et la barre d'outils restent au même endroit? –

+0

ce que j'essaie de faire est: l'utilisateur fait pivoter l'iPhone, les icônes sur les boutons sur la barre d'outils pivotent, de sorte que l'utilisateur peut les voir debout. – SpaceDog

Répondre

2

Je ne crois pas qu'il y ait quelque chose de intégré pour gérer cela pour vous. Cependant, il est certainement possible de coder ceci. 1) Écoutez le message vous indiquant que l'orientation change. Ne permettez pas à la vue de pivoter (cela empêchera votre barre d'outils de bouger), mais utilisez l'opportunité pour faire autre chose.
2) Remplacez les images des boutons par des images pivotant de 90 degrés dans la direction appropriée.
3) Remplacer l'image dans le contexte d'une animation de base qui effectue une animation de rotation. Vous devriez être capable de trouver des exemples de code pour savoir comment faire cela.

Un espoir qui vous aide à regarder dans la bonne direction.

+0

c'est tout! Merci! – SpaceDog

1

Je devais le faire aussi. En faisant comme l'a suggéré Ken, je ne pouvais pas trouver un bon moyen d'animer la rotation. Il est préférable de pouvoir définir la transformation sur l'image de l'élément, ce que vous ne pouvez pas faire avec un UIBarButtonItem simple mais avec un construit avec une vue personnalisée:

à la place de [[UIBarButtonItem alloc] initWithImage: image objectif: action t: a]:

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button addTarget:t action:a forControlEvents:UIControlEventTouchUpInside]; 
[button setImage:image forState:UIControlStateNormal]; 
button.showsTouchWhenHighlighted = YES; // makes it highlight like normal 
item = [[UIBarButtonItem alloc] initWithCustomView:button]; 

vous pouvez faire:

[UIView beginAnimations:@"rotate barbuttonitems" context:NULL]; 
item.customView.transform = CGAffineTransformMakeRotation(M_PI_2); 
[UIView commitAnimations]; 
Questions connexes