Wenn Sie zu dieser Frage gekommen sind, um herauszufinden, wie Sie eine Orientierungsänderung erkennen können (ohne die Drehung unbedingt deaktivieren zu wollen), sollten Sie sich auch darüber im Klaren sein viewWillTransitionToSize
, was unter iOS 8 verfügbar ist.
Schnelles Beispiel von hier
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
coordinator.animateAlongsideTransition({ (UIViewControllerTransitionCoordinatorContext) -> Void in
let orient = UIApplication.sharedApplication().statusBarOrientation
switch orient {
case .Portrait:
println("Portrait")
default:
println("Anything But Portrait")
}
}, completion: { (UIViewControllerTransitionCoordinatorContext) -> Void in
println("rotation completed")
})
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
}
Und wenn Sie sich keine Gedanken über die tatsächliche Ausrichtung machen müssen:
override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator)
}
Objective-C-Beispiel von hier
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context)
{
UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation];
} completion:^(id<UIViewControllerTransitionCoordinatorContext> context)
{
}];
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}
Und wenn Sie sich keine Gedanken über die tatsächliche Ausrichtung machen müssen (aus dieser Antwort entnommen ):
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}
Siehe auch
viewDidLayoutSubviews
, um alle Layoutänderungen zu berücksichtigen. (Denken Sie daran, dass Benutzer in naher Zukunft die Größe von Apps in Windows auf Geräten ändern werden.) Reaktives Layout ist derzeit die Norm.