[Objective C iPad] Bei UIInterfaceRotation wird UIView Height falsch berechnet ...

Erks

Erfahrenes Mitglied
Hi,
ich habe schon Google zu diesem Thema bemüht, aber keine Antwort finden können:

Auf dem View (bei iPhone oder iPad) werden verschiedene Unterelemente (UIScrollView und zwei UITableViews) angezeigt. Das Diese aber dynamisch erstellt werden sollen, verwende ich den Befehl "self.view.frame.size.height" oder "self.view.bounds.size.height", um mir die Höhe ausgeben zulassen, damit anhand dieses Wertes neu gezeichnet werden kann.

Nun zu dem Problem:
Ich habe folgenden Codeausschnitt:

Code:
- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation{
	UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation];
	
	switch (orientation){
		case UIInterfaceOrientationPortrait:
			NSLog(@"UIInterfaceOrientationPortrait --> h: %f", self.view.bounds.size.height);
			break;
		case UIInterfaceOrientationUpsideDown:
			NSLog(@"UIInterfaceOrientationUpsideDown --> h: %f", self.view.bounds.size.height);
			break;
		case UIInterfaceOrientationLandscapeLeft:
			NSLog(@"UIInterfaceOrientationLandscapeLeft --> h: %f", self.view.bounds.size.height);
			break;
		case UIInterfaceOrientationLandscapeRight:
			NSLog(@"UIInterfaceOrientationLandscapeRight --> h: %f", self.view.bounds.size.height);
			break;
		default: break;
	}
}

Sooo, eignetlich sollte er mir hier einfach mal die Höhe in der Konsole ausgeben. Das geschieht auch, aber falsch! :mad:

Wenn wir das Handy in der Hand halten (mit der Ohrmuschel oben) haben wir 0°. Dann dreh ich das Handy auf 90° und ein falsche Höhe wird berechnet, denn der UIScrollView, der eigentlich mitgedreht werden sollte, wir unter das UINavigationItem geschoben und das deutet auf einen zu großen View hin (Höhe vom allgemeinen UIView: 251). Dann dreh ich weiter auf 180° (UpsideDown) da geschieh nichts. Bei 270° wird dann die richtige Höhe berechnet (Höhe vom allgemeinen UIView: 219). Dann wieder auf 0° / 360° und die Höhe ist wieder falsch.

Wenn ich anders herum drehe ist das genauso. Bei 270° falsch, bei 180° (UpsideDown) nix, bei 90° richtig und bei 0° wieder falsch.

:( Hä? Woran liegt das?
Die Dimensionen des Displays bleiben doch gleich, wenn ich das Handy von einem LandscapeLeft in LandscapeRight und umgekehrt drehe, wieso sind das aber die falschen Höhen? Die haben immer eine Differenz von 32.

Autosize habe ich auch eingeschaltet, trotzdem.:eek:

Thx für Antworten.
 
Zurück