Die viewWillTransitionToSize:withTransitionCoordinator:
scheint nur zu funktionieren, wenn die Schnittstelle tatsächlich Größe ändern wird, was bedeutet, dass wir um 90 Grad gedreht haben. Wenn Sie eine Maske in Ihrem Layout haben, die nur Querformat zulässt, ändert sich bei einer Drehung um 180 Grad die Größe der Schnittstelle nicht, daher scheint diese Methode nicht aufgerufen zu werden.
Ich habe durch stattdessen Registrierung auf den UIDeviceOrientationDidChangeNotification
Benachrichtigung, um diesen in meiner app gearbeitet wie:
(Aus meiner Sicht Controller viewWillAppear
):
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(deviceOrientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
(Ein in meinem viewWillDisappear
[erinnert abmelden]
)
[[UIDevice currentDevice] endGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];
Mein deviceOrientationDidChange:
wie folgt aussieht:
- (void)deviceOrientationDidChange:(NSNotification *)notification {
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
[self willRotateToInterfaceOrientation:orientation duration:1.0];
}
Ich habe meine ViewController als eine Ansicht für segmentierte Schaltflächen geladen. In diesem Fall habe ich viewWillTransitionToSize nicht erhalten: withTransitionCoordinator: called. Wie willst du den viewController laden? – Surendra