Перед iOS 8 ми використовували код нижче в поєднанні з підтримуванимиInterfaceOrientations та методами делегування 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 і далі.
Якщо конкретніше, моя заявка - це універсальний тип додатків. Всього три контролери.
Контролер першого перегляду - він повинен підтримувати всі орієнтації в iPad та лише портрет (кнопка додому) в iPhone.
Контролер другого перегляду - Він повинен підтримувати лише право пейзажу в будь-яких умовах
Контролер третього перегляду - Він повинен підтримувати лише право пейзажу в будь-яких умовах
Ми використовуємо контролер навігації для навігації по сторінках. З першого контролера перегляду, при натисканні кнопки, ми натискаємо другий на стек. Отже, коли приходить контролер другого виду, незалежно від орієнтації пристрою, додаток має фіксуватися лише в правій частині пейзажу.
Нижче наведено мої shouldAutorotate
та supportedInterfaceOrientations
методи в другому та третьому контролерах подання.
-(NSUInteger)supportedInterfaceOrientations{
return UIInterfaceOrientationMaskLandscapeRight;
}
-(BOOL)shouldAutorotate {
return NO;
}
Чи є рішення щодо цього чи будь-якого кращого способу блокування контролера перегляду, зокрема орієнтації на iOS 8. Будь ласка, допоможіть !!