Настраиваемая модальная презентация игнорирует prefeInterfaceOrientationForPresentation
Я пишу пользовательскую модальную презентацию с помощью iOS 8 UIPresentationController. Представленный контроллер имеет предпочтительную ориентацию интерфейса UIInterfaceOrientationLandscapeLeft
,
При представлении этого контроллера с помощью UIPresentationController он отображается в портретной ориентации, игнорируя результат представленного метода предпочитаемого контроллера InterfaceOrientationForPresentation.
Представление View Controller
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let controller = segue.destinationViewController as? UIViewController {
controller.modalPresentationStyle = .Custom
controller.transitioningDelegate = self
}
}
func animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return nil
}
func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
return nil
}
func presentationControllerForPresentedViewController(presented: UIViewController,
presentingViewController presenting: UIViewController!,
sourceViewController source: UIViewController) -> UIPresentationController? {
return UIPresentationController(presentedViewController: presented, presentingViewController: presenting)
}
Представленный Контроллер Представления
override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
return .LandscapeLeft
}
Можно ли сделать так, чтобы UIPresentationController учитывал результат метода предпочитаемого интерфейса InterfaceOrientationForPresentation представленного контроллера?
1 ответ
Я ответил на это на форумах Apple, но в случае, если кто-то наткнется на эту ветку от Google..
Это не должно работать. Насколько я могу судить, логика обработки регулировки ориентации во время представления существует только в частных подклассах UIPresentationController, используемых для реализации стилей представления по умолчанию.
Кроме того, метод -supportedInterfaceOrientations пользовательского представленного контроллера представления обычно игнорируется, если только вы не переопределите -shouldRemovePresentersView в своем подклассе контроллера представления.