2010-09-03 5 views
0

dans mon application tous mes contrôles sont créés dans le code. Je n'ai pas utilisé IB pour les contrôles. maintenant je veux faire pivoter la vue en mode paysage. Je sais que je dois utiliser la méthode shouldAutorotate à cette fin. mais puisque je n'ai pas utilisé IB, comment puis-je redimensionner les contrôles quand ils sont en mode paysage? comment puis-je les positionner correctement en utilisant le code seulement ??? plz m'aider, c'est un peu important et urgent. d'avance.rotation de l'uiview withoud IB

Répondre

1

Dans la plupart des cas, vous pouvez obtenir des vues de se redimensionner de façon appropriée simplement en juxtaposant leurs biens autoresizingMask à une combinaison de:

  • UIViewAutoresizingFlexibleLeftMargin
  • UIViewAutoresizingFlexibleRightMargin
  • UIViewAutoresizingFlexibleTopMargin
  • UIViewAutoresizingFlexibleBottomMargin
  • UIViewAutoresizingFlexibleWidth
  • UIViewAutoresizingFlexibleHeight

Par exemple, disons que vous voulez la largeur en vue d'augmenter lorsque vous faites pivoter en mode paysage, vous souhaitez conserver les mêmes marges par rapport au haut, à gauche, et à droite de l'écran, et vous voulez que sa hauteur reste la même. Cela signifie que sur les six attributs ci-dessus, seules la largeur et la marge inférieure doivent être flexibles. Les quatre autres attributs sont fixes. Alors vous feriez:

yourView.autoresizingMask = UIViewAutoResizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin; 

Dans les rares cas où vous ne pouvez pas obtenir les vues à se comporter de façon appropriée en utilisant leur propriété autoresizingMask, vous pouvez les envelopper dans une vue personnalisée et remplacer la méthode layoutSubviews de ce point de vue. Cette méthode est appelée lorsque le cadre de la vue change en raison d'une autorotation. Vous pouvez donc vérifier [[UIApplication sharedApplication] statusBarOrientation] et mettre à jour les cadres de vos sous-vues manuellement.

+0

hey thnx. Je pense que cela va m'aider avec Wat j'essaie d'atteindre. Je pense que les propriétés autoresizing va bien s'entraîner. – Jayshree

0

Vous les positionnez correctement en utilisant le code de la même manière que vous les avez probablement positionnés dans l'orientation d'origine, par exemple en définissant leur cadre. Pour ce qui est du code, consultez les diverses méthodes de changement d'orientation de UIViewController qui seront appelées lorsque l'orientation de l'appareil changera. Vous pouvez, par exemple, déplacer/redimensionner les contrôles dans la vue au sein de willAnimateRotationToInterfaceOrientation:duration:.

+0

hi. merci pour la réponse. mais mon souci est-ce que je dois définir le cadre pour chaque objet quand il est dans le paysage? Est-ce que je veux dire que je dois définir le cadre pour chaque objet deux fois, c'est-à-dire en portrait et en paysage? cela deviendra peu encombrant, puisque j'ai beaucoup de vues et beaucoup de contrôles dans chacun d'entre eux? Avez-vous un exemple de code ou un exemple qui va m'aider? – Jayshree