10

Tworzyłem aplikację na iOS, która musi wykonać małe przegrupowanie interfejsu po obróceniu. Próbuję to wykryć, implementując - (void)orientationChanged:(NSNotification *)note, ale to daje mi powiadomienia, kiedy urządzenie jest odkryte lub zakryte.Wykryj zmiany rotacji w systemie iOS

Potrzebuję sposobu na otrzymanie powiadomienia, gdy interfejs zmieni orientacje.

Odpowiedz

26

Istnieje kilka metod, gdzie można to zrobić, można je znaleźć w UIViewController class reference:

– willRotateToInterfaceOrientation:duration: 
– willAnimateRotationToInterfaceOrientation:duration: 
– didRotateFromInterfaceOrientation: 

Można również zrobić to w metodzie viewWillLayoutSubviews, ale należy być ostrożnym z tym, bo to się nazywa na także wygląd ekranu i po dodaniu podglądu.

Edit:

Rozwiązanie teraz przestarzałe, Akceptowane odpowiedź.

+9

Należy zauważyć, że wszystkie trzy z nich są nieaktualne w systemie iOS 8. Zalecają użycie wariantu, który zmienia się na rozmiar. –

4

Swift 3:

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 

} 
1

Od wersji iOS 8 jest to właściwy sposób.

override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { 
    super.viewWillTransition(to: size, with: coordinator) 

    coordinator.animate(alongsideTransition: { context in 
     // This is called during the animation 
    }, completion: { context in 
     // This is called after the rotation is finished. Equal to deprecated `didRotate` 
    }) 
} 
Powiązane problemy