2010-09-04 8 views
10

Je l'ai fait ce que cette question a dit ici: Landscape Mode ONLY for iPhone or iPadlargeur du cadre iPad et mixup hauteur dans le paysage

mais le view.frame.size.height est encore 1024, qui est la hauteur lorsque l'appareil est en mode portrait, sûrement lorsque l'interface fait pivoter les valeurs de changement de largeur et de hauteur? (Disons que vous vouliez diviser l'écran en 3 vues, pour une application qui est à la fois paysage et portrait, et vous avez fait view.frame.size.width/3, dans un paysage qui ne serait pas correct comme la largeur la valeur ne serait pas réellement la largeur)

Je suis sûr que sur l'iPhone la largeur et la hauteur passeront, alors pourquoi pas sur l'iPad? Cela m'a frappé encore une fois Je ne travaille pas non plus avec une plume, est-ce que quelqu'un pourrait donner une réponse acceptable? (c'est-à-dire qui n'implique pas de changement manuel de la largeur et de la hauteur)

Une fois que la prime a été attribuée à une réponse, je vais ensuite commencer une autre prime pour 250 et l'attribuer à la même personne.

+0

Lancer une prime à ce sujet. La prime sera accordée à la première personne qui publie le code d'une classe qui le fait correctement. –

+0

Je ne sais pas exactement ce que j'ai fait, mais je l'ai "réparé". Je me suis débarrassé de ma plume et j'ai réécrit la classe –

+0

Je travaille sans plume. Mais je ne peux pas obtenir la largeur et la hauteur pour être correct après l'autorotation. –

Répondre

24

Vous n'avez pas spécifié quelle "vue" vous interrogez. En supposant qu'il s'agit de la sous-vue de niveau supérieur de la fenêtre:

Vous devez interroger le bounds de la vue et non son frame. frame est dans la coordonnée dans laquelle la vue est définie (le monde extérieur) peut donc rester constant que vous faites pivoter. bounds est la coordonnée utilisée "à l'intérieur" de la vue et pour ses sous-vues. Cela change quand vous tournez.

+0

cela semble bien, mais si le cadre n'est pas 'correct', les boutons ne sont pas cliquables, etc. – Jake

2
+ (int) currentWidth 
{ 
UIScreen *screen = [UIScreen mainScreen]; 
int width = screen.currentMode.size.width; 
int height = screen.currentMode.size.height; 
return (UIDeviceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]))? MAX (width, height) : MIN (width, height); 
} 

J'ai passé un certain temps à essayer de trouver la solution la plus simple à un problème frustrant, ce qui était le mieux que je pouvais trouver. J'espère que ça peut aider.

+0

Jusqu'à présent, je ne peux pas faire mieux non plus. Vous obtiendrez la prime si personne ne le fait. –

Questions connexes