#iphone #ios #uiinterfaceorientation
#iPhone #iOS #ориентация uiinterfaceorientation
Вопрос:
есть ли какая-либо разница, когда мы используем следующие два метода для изменения ориентации в iOS.
1) Использование NotificationCenter
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChange) name:UIDeviceOrientationDidChangeNotification object:nil];
-(void) orientationChange
{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
NSLog(@"Orientation =%d",orientation);
NSLog(@"in Testtt");
}
2) Методы делегирования ориентации ViewController
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
if(UIInterfaceOrientationLandscapeRight == interfaceOrientation || UIInterfaceOrientationLandscapeLeft == interfaceOrientation)
return YES;
else
return NO;
}
Ответ №1:
В первом случае вы получите UIDeviceOrientation. [[UIDevice currentDevice] orientation]
возвращает UIDeviceOrientation, ориентацию устройства. Но обратите внимание, что ориентация UIDeviceOrientation не всегда является ориентацией UIInterfaceOrientation. Например, когда ваше устройство находится в обычной таблице, вы можете получить неожиданное значение ( UIDeviceOrientationUnknown
).
В shouldAutorotateToInterfaceOrientation
методе вы можете получить доступ к UIInterfaceOrientation, текущей ориентации интерфейса.