Estou tentando implementar o novo viewWillTransitionToSize
método que foi introduzido no iOS 8 (todos os outros métodos de rotação foram preteridos). Eu gostaria de saber qual é o equivalente adidRotateFromInterfaceOrientation
agora, pois há várias tarefas de limpeza que precisamos executar e não consigo ver um bloco ao qual podemos atribuir UIViewControllerTransitionCoordinator
para ser chamado quando 'transição' para um novo tamanho termina. Obrigado.
ios
iphone
objective-c
ios8
estranho
fonte
fonte
- (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
. Você também pode canalizar isso paraUIDeviceOrientationIsPortrait([UIDevice currentDevice].orientation)
ouUIDeviceOrientationIsLandscape([UIDevice currentDevice].orientation)
. Espero que isto ajude!A versão rápida da resposta por estranho
fonte
print
nada no meu log. Eu acho que porque este método não está sendo chamado. Você pode pensar em mais alguma coisa que precisaria ser conectada para que isso funcionasse?iOS 10.3 e Swift 3
fonte
A resposta aceita no Swift 3 :
Funciona bem para mim 👍
fonte
let orient = newCollection.verticalSizeClass switch orient { case .compact: print("Lanscape") // Do something default: print("Portrait") // Do something else }
Como a pergunta era: qual era o equivalente a
didRotateFromInterfaceOrientation
Pensei em contribuir com o código abaixo:
Eu estava testando em um iPhone no simulador, mas minhas declarações de impressão não serão executadas se eu testar usando o iPad, pois a coleção de características não será alterada.
Isso é estranho, porque é exatamente isso que a Apple recomenda :
fonte
[[UIApplication sharedApplication] statusBarOrientation]
está obsoleto no iOS9, você deve testar o UITraitCollection para vários dispositivos.fonte
No Ipad, não há alteração na coleção de características, e aqui está como você detecta a rotação desde o início e a conclusão. Aqui está a sintaxe do Swift 5:
fonte