Контроллер палубы iiview меняет кадр без изменения ориентации интерфейса при представлении модального вида

Я использую IIViewDeckController и столкнуться с очень странной проблемой следующим образом:

мой ViewController(который является IIViewDeckController) находится в ландшафтном режиме, а затем я представляю новый контроллер представления модально поверх него. Теперь модальный контроллер вида не поддерживает ландшафтный режим и, таким образом, представлен только в портретном режиме.
На данный момент все прошло нормально.

Но как только я пытаюсь отклонить этот модально представленный контроллер, IIViewDeckController's рамка представления становится (320,568) (я думаю, что это IIViewDeckController повернулся в портретном режиме, но я не уверен в этом). Итак, я проверил self.interfaceOrientation который показал "4"(т.е. UIInterfaceOrientationLandscapeLeft) который должен быть фактическим случаем.

Но эти две вещи сбивают меня с толку, поскольку рамка указывает на портретный режим, а свойство показывает что-то другое. Теперь из-за изменения этого кадра без изменения interfaceOrientation приводит к неправильному вычислению фреймов объектов в представлении.

1 ответ

Я столкнулся с той же проблемой, я решил ее по категориям IIViewDeckController внутри класса AppDelegate.

Ниже приводится один метод, который необходимо было классифицировать:

@interface IIViewDeckController (categoryForOrientation)
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation;
@end

@implementation IIViewDeckController (categoryForOrientation)

- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation{
    return [self interfaceOrientation];
}
Другие вопросы по тегам