Próbuję zaimplementować nową viewWillTransitionToSize
metodę, która została wprowadzona w iOS 8 (wszystkie inne metody rotacji zostały wycofane). Chciałbym wiedzieć, jaki didRotateFromInterfaceOrientation
jest teraz odpowiednik, ponieważ jest wiele zadań porządkujących, które musimy wykonać i nie widzę bloku, do którego możemy przypisać UIViewControllerTransitionCoordinator
, aby został wywołany podczas `` przejścia '' do nowego rozmiar kończy. Dzięki.
ios
iphone
objective-c
ios8
dziwne
źródło
źródło
- (void) viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator { [coordinator animateAlongsideTransition:^(id<UIViewControllerTransitionCoordinatorContext> context) { UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; // do whatever } completion:^(id<UIViewControllerTransitionCoordinatorContext> context) { }]; [super viewWillTransitionToSize: size withTransitionCoordinator: coordinator]; }
[UIDevice currentDevice].orientation
. Możesz również podłączyć to doUIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)
lubUIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)
. Mam nadzieję że to pomoże!Szybka wersja odpowiedzi dziwna
źródło
print
nic w moim dzienniku. Chyba dlatego, że ta metoda nie jest wywoływana. Czy możesz wymyślić coś innego, co musiałoby być podłączone, aby to zadziałało?iOS 10.3 i Swift 3
źródło
Zaakceptowana odpowiedź w Swift 3 :
U mnie działa dobrze 👍
źródło
let orient = newCollection.verticalSizeClass switch orient { case .compact: print("Lanscape") // Do something default: print("Portrait") // Do something else }
Ponieważ pytanie brzmiało: co jest odpowiednikiem
didRotateFromInterfaceOrientation
Pomyślałem, że udostępnię poniższy kod:
Testowałem na iPhonie w symulatorze, ale moje instrukcje drukowania nie zostaną uruchomione, jeśli przetestuję na iPadzie, ponieważ zbiór cech nie ulegnie zmianie.
Jest to dziwne, ponieważ dokładnie to zaleca Apple :
źródło
[[UIApplication sharedApplication] statusBarOrientation]
jest przestarzały w iOS9, musisz przetestować go pod kątem UITraitCollection dla różnych urządzeń.źródło
Na iPadzie nie ma zmiany kolekcji cech, więc oto jak wykryjesz rotację od początku do zakończenia. Oto składnia Swift 5:
źródło