Настраиваемая модальная презентация игнорирует 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 в своем подклассе контроллера представления.

Другие вопросы по тегам