J'essaie d'implémenter la nouvelle viewWillTransitionToSize
méthode qui a été introduite dans iOS 8 (toutes les autres méthodes de rotation sont obsolètes). J'aimerais savoir de quoi l'équivalent didRotateFromInterfaceOrientation
est maintenant car il y a un certain nombre de tâches de nettoyage que nous devons effectuer et je ne vois pas de bloc que nous pouvons attribuer UIViewControllerTransitionCoordinator
pour être appelé lors de la `` transition '' vers un nouveau finitions de taille. Merci.
ios
iphone
objective-c
ios8
étrange
la source
la source
- (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
. Vous pouvez également canaliser ceci dansUIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)
ouUIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)
. J'espère que cela t'aides!La version Swift de la réponse par étrange
la source
print
rien fait dans mon journal. Je suppose que cette méthode n'est pas appelée. Pouvez-vous penser à autre chose qui devrait être branché pour que cela fonctionne?iOS 10.3 et Swift 3
la source
La réponse acceptée dans Swift 3 :
Cela fonctionne bien pour moi 👍
la source
let orient = newCollection.verticalSizeClass switch orient { case .compact: print("Lanscape") // Do something default: print("Portrait") // Do something else }
Puisque la question était: quel était l'équivalent de
didRotateFromInterfaceOrientation
Je pensais contribuer au code ci-dessous:
Je testais sur un iPhone dans le simulateur, mais mes instructions d'impression ne seront pas exécutées si je teste à l'aide de l'iPad, car traitsCollection ne changera pas.
C'est étrange car c'est exactement ce que recommande Apple :
la source
[[UIApplication sharedApplication] statusBarOrientation]
est obsolète dans iOS9, vous devez tester UITraitCollection pour divers appareils.la source
Sur l'Ipad, il n'y a pas de changement de collection de traits, voici donc comment vous détectez la rotation depuis le début et la fin. Voici la syntaxe Swift 5:
la source