In meinem Programm verschiebe ich Dinge basierend auf Rotation, aber ich rotiere nicht die gesamte Ansicht. Ich verwende:Wie erkenne ich die iPhone-Ausrichtung vor dem Drehen?
static UIDeviceOrientation previousOrientation = UIDeviceOrientationPortrait;
- (void)applicationDidFinishLaunching:(UIApplication *)application {
[window addSubview:viewController.view];
[window makeKeyAndVisible];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:@"UIDeviceOrientationDidChangeNotification" object:nil];
}
- (void) didRotate:(NSNotification *)notification{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
[self doRotationStuff:orientation: previousOrientation];
previousOrientation = orientation;
}
Dies funktioniert solange, wenn das Programm gestartet wird, ist das Gerät Orientierung Porträt, aber nicht, wenn die anfängliche Orientierung ist Landschaft oder auf den Kopf, weil [self doRotationStuff] macht Änderungen relativ zum Unterschied von der vorherigen Orientierung.
Gibt es eine Möglichkeit, die Ausrichtung entweder beim Start oder direkt vor dem Drehen des Geräts zu erkennen?
Während applicationDidFinishLaunching [UIDevice currentDevice] .orientation ist UIDeviceOrientationUnknown –
Ich bin ratlos, wie ich perform verwenden würde: afterDelay. Können Sie ein Codebeispiel geben? –
Ich habe versucht, was Sie sagten, aber auch [self performSelector: @selector (getOriented) withObject: nil afterDelay: 10.0f]; hatte keinen Effekt –