Контроллер палубы 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];
}