Поворот экрана iOS 8 портит вид

У меня есть приложение со всеми экранами в портретной ориентации, кроме одного. В iOS 8 эта одна горизонтальная страница отображается нормально, пока устройство не повернется в любом направлении. Вид вращается по странной оси, и его части выходят за пределы экрана. Я пытался обновить кадр представления в viewWillTransitionToSize, но это вызывает еще больше проблем, изменяя кадры подпредставлений, чтобы они были супер сумасшедшими. Некоторые решения предложили сделать это:

- (void)applicationDidChangeStatusBarOrientation:(NSNotification *)notification
{
    [UIViewController attemptRotationToDeviceOrientation];
}

Но это не сработало для меня. Любые идеи? Спасибо!


person CodyMace    schedule 26.03.2015    source источник
comment
На iOS7 работает?   -  person Rory McKinnel    schedule 27.03.2015
comment
Взгляните на это, если это ваша проблема, поскольку она влияет на вращение на iOS8: stackoverflow.com/questions/28443852/   -  person Rory McKinnel    schedule 27.03.2015
comment
Да, @RoryMcKinnel, кажется, это исправление. Можно ли с уверенностью сказать, что удаление этой строки не вызовет других проблем в любой версии iOS? Это приложение должно работать на iOS7 и 8.   -  person CodyMace    schedule 27.03.2015
comment
Все будет хорошо. Это пережиток сборки с xcode до xcode6, и он больше не нужен. Позор Apple не догадался хотя бы вынести предупреждение. Я вынул свой, и пока все хорошо в iOS7 и 8.   -  person Rory McKinnel    schedule 27.03.2015


Ответы (2)


Оскорбительная строка будет в вашей функции AppDelegate didFinishLaunchingWithOptions и будет выглядеть следующим образом:

self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] границ]];

person Ravikanth    schedule 27.03.2015
comment
Комментирование этой строки, кажется, работает. Но вызовет ли это проблемы в iOS 7 или какие-либо другие проблемы во всем приложении? - person CodyMace; 27.03.2015

Пожалуйста, попробуйте это.

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

Это будет разрешено как для левого, так и для правого ландшафта (но это устарело с iOS6).

Или этот, но я его не проверял.

- (BOOL)shouldAutorotate {
    return NO;
}
person Suttikeat Witchayakul    schedule 27.03.2015
comment
Ни один из них, кажется, не работает, вероятно, из-за того, как iOS 8 теперь обрабатывает поворот. Спасибо хоть. - person CodyMace; 27.03.2015