Mam jeden kontroler widoku podzielonego i przedstawiam w nim popover. Teraz, gdy orientacja urządzenia zmienia się z pionowej na pionową, muszę uruchomić kod &, jeśli zmienia się z portretu na krajobraz, muszę uruchomić kolejny fragment kodu. Jak to osiągnąć w Swift.Sposób sprawdzania orientacji urządzenia Zmiana z portretu na pionowy i vice versa na iPadzie
5
A
Odpowiedz
-1
Od iOS 8.0 Możesz wykryć zmianę orientacji za pomocą poniższej metody.
w Objective-C
- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
w szybkim
func viewWillTransitionToSize(_ size: CGSize,
withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator)
od wielkości można się dowiedzieć.
16
Aktualizacja do Swift 4: Dodaj poniżej kod w ViewDidLoad
:
NotificationCenter.default.addObserver(self, selector: #selector(orientationChanged), name: Notification.Name("UIDeviceOrientationDidChangeNotification"), object: nil)
Następnie należy utworzyć jedną funkcję jak poniżej
@objc func orientationChanged() {
if(UIDeviceOrientationIsLandscape(UIDevice.current.orientation)){
print("landscape")
}
if(UIDeviceOrientationIsPortrait(UIDevice.current.orientation)){
print("Portrait")
}
}
nadzieję, że to pomaga :)
+0
UIDeviceOrientation! = UIInterfaceOrientation – nnrales
Ta metoda nie jest wywoływana. Mam kontroler podzielonego widoku – Swayambhu
** UISplitViewContoller ** jest również podklasą ** UIVIewController **. Powinien zostać wywołany. Jeszcze jeden ważny punkt sprawdza, czy wywołać tę metodę z super czy nie. ** viewWillTransitionToSize: withTransitionCoordinator: ** wydaje się działać tylko wtedy, gdy interfejs rzeczywiście zmieni rozmiar, co oznacza, że obróciliśmy o 90 stopni. Jeśli masz maskę na swoim układzie, która pozwala tylko na krajobraz, gdy obraca się o 180 stopni, rozmiar interfejsu się nie zmienia, więc ta metoda nie wydaje się być wywołana. – commando24