Pracuję nad aplikacją iOS z najnowszym pakietem SDK.Orientacja pozioma, ale wartości w pionie ramki?
Ustawiłem orientację poziomą krajobrazu jako unikalną dostępną orientację i mam pytanie dotyczące widoku viewController.
To jest mój kod:
- (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));
}
I to jest dziennik, który pojawia się:
Orientation: Landscape Right
FRAME: {{0, 0}, {320, 568}}
Orientation: Landscape Right
FRAME: {{0, 0}, {320, 568}}
Moje pytanie jest o {{0, 0}, {320, 568}}
:
Dlaczego otrzymuję te wartości?
Myślę, że prawidłowe wartości to {{0, 0}, {568, 320}}
.
moje przypuszczenie jest jego pełnoekranowy VideoController ci wyświetlają się, gdy aplikacja jest nadal portretowana. –
Testowałem program za pomocą symulatora i pojawia się on w orientacji poziomej. I tak, jest to aplikacja pełnoekranowa. – VansFannel
Nie powinieneś słuchać zmian orientacji urządzenia. 'UIViewController' ma odpowiednie metody do słuchania zmian orientacji interfejsu. Dodaj swój kod logowania w odpowiednich metodach. Wypróbuj 'didRotateFromInterfaceOrientation:' lub 'viewDidLayoutSubviews'. – rmaddy