3

iOS 8 の UIPresentationController を使用してカスタム モーダル プレゼンテーションを作成しています。提示されているコントローラーには、優先されるインターフェースの向きがありますUIInterfaceOrientationLandscapeLeft

UIPresentationController を使用してこのコントローラーを提示すると、提示されたコントローラーの preferredInterfaceOrientationForPresentation メソッドの結果を無視して、ポートレートで表示されます。

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)
}

提示されたView Controller

override func preferredInterfaceOrientationForPresentation() -> UIInterfaceOrientation {
    return .LandscapeLeft
}

UIPresentationController に、提示されたコントローラーの preferredInterfaceOrientationForPresentation メソッドの結果を考慮させることは可能ですか?

4

1 に答える 1

1

私はAppleフォーラムでこれに答えましたが、誰かがGoogleからこのスレッドに出くわした場合..

これは動作しないと予想されます。私が知る限り、プレゼンテーション時に向きの調整を処理するロジックは、デフォルトのプレゼンテーション スタイルを実装するために使用されるプライベート UIPresentationController サブクラスにのみ存在します。

余談ですが、プレゼンテーション コントローラのサブクラスで -shouldRemovePresentersView をオーバーライドしない限り、カスタム表示されたビュー コントローラの -supportedInterfaceOrientations メソッドは通常無視されます。

于 2014-11-01T23:11:59.800 に答える