Перед прошивкой 8, мы использовали ниже кода в сочетании с supportedInterfaceOrientations и shouldAutoRotate методов делегата , чтобы заставить ориентацию приложения к какой - либо конкретной ориентации. Я использовал приведенный ниже фрагмент кода, чтобы программно повернуть приложение в нужную ориентацию. Во-первых, я меняю ориентацию строки состояния. И затем просто представление и немедленное отклонение модального вида поворачивает вид в желаемую ориентацию.
[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationLandscapeRight animated:YES];
UIViewController *c = [[UIViewController alloc]init];
[self presentViewController:vc animated:NO completion:nil];
[self dismissViewControllerAnimated:NO completion:nil];
Но это не работает в iOS 8. Кроме того, я видел некоторые ответы в переполнении стека, где люди предлагали, чтобы мы всегда избегали этого подхода с iOS 8 и далее.
Чтобы быть более конкретным, мое приложение является универсальным типом приложения. Всего три контроллера.
Контроллер First View - он должен поддерживать все ориентации в iPad и только портрет (кнопка «Домой» вниз) в iPhone.
Контроллер второго вида - он должен поддерживать только ландшафтное право в любых условиях
Контроллер третьего вида - он должен поддерживать только ландшафтное право в любых условиях
Мы используем навигационный контроллер для навигации по страницам. В первом контроллере представления при нажатии кнопки мы помещаем второй в стек. Таким образом, когда прибывает второй контроллер представления, независимо от ориентации устройства, приложение должно блокироваться только в горизонтальной плоскости.
Ниже мой shouldAutorotate
и supportedInterfaceOrientations
методы во втором и третьем представлении контроллера.
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeRight;
}
-(BOOL)shouldAutorotate {
return NO;
}
Есть ли какое-либо решение для этого или какой-либо лучший способ блокировки контроллера представления в определенной ориентации для iOS 8. Пожалуйста, помогите!