Sto sviluppando un'applicazione iOS con l'ultimo SDK.Orientamento orizzontale ma valori fotogramma verticale?
Ho impostato Orientamento orizzontale come orientamento univoco disponibile e ho una domanda sulla vista viewController.
Questo è il mio codice:
- (void)viewDidLoad
{
[super viewDidLoad];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(deviceOrientationDidChange:)
name:UIDeviceOrientationDidChangeNotification
object:nil];
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
return (interfaceOrientation != AVCaptureVideoOrientationLandscapeRight);
}
- (void)deviceOrientationDidChange:(NSNotification*)notification
{
UIInterfaceOrientation orientation = [UIApplication sharedApplication].statusBarOrientation;
if (orientation == AVCaptureVideoOrientationLandscapeLeft)
NSLog(@"Orientation: Landscape Left");
else if (orientation == AVCaptureVideoOrientationLandscapeRight)
NSLog(@"Orientation: Landscape Right");
NSLog(@"FRAME: %@", NSStringFromCGRect(self.view.frame));
}
e questo è il registro che ottengo:
Orientation: Landscape Right
FRAME: {{0, 0}, {320, 568}}
Orientation: Landscape Right
FRAME: {{0, 0}, {320, 568}}
La mia domanda riguarda {{0, 0}, {320, 568}}
:
Perché ricevo questi valori?
Penso che i valori corretti sarebbero {{0, 0}, {568, 320}}
.
la mia ipotesi è che è un VideoController fullscreen voi stanno visualizzando, mentre l'app è ancora in verticale. –
Ho testato il programma con il simulatore e appare in orientamento orizzontale. E sì, è un'app a schermo intero. – VansFannel
Non si dovrebbero ascoltare i cambiamenti di orientamento del dispositivo. 'UIViewController' ha metodi appropriati per l'ascolto delle modifiche all'orientamento dell'interfaccia. Aggiungi il tuo codice di registrazione con i metodi appropriati. Prova 'didRotateFromInterfaceOrientation:' o 'viewDidLayoutSubviews'. – rmaddy