3

すべてのデバイスとすべての向きで、ビュー コントローラーを常にポップオーバーに表示したいと考えています。UIPopoverPresentationControllerDelegateを採用し、と を設定することで、これを達成しようとしましsourceViewsourceRect。ストーリーボードのセグエは、Present As Popover セグエとして構成されます。これは、横向きの iPhone 6 Plus を除いて、すべてのデバイスと向きで非常にうまく機能します。その場合、View Controller はフォーム シートで画面の下部から上にスライドします。常にポップオーバーに表示されるようにするにはどうすればよいですか?

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let popoverPresentationController = segue.destinationViewController.popoverPresentationController
    popoverPresentationController?.delegate = self
    popoverPresentationController?.sourceView = self.titleLabel!.superview
    popoverPresentationController?.sourceRect = self.titleLabel!.frame
}

func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
    return UIModalPresentationStyle.None
}
4

1 に答える 1

7

次の新しい (iOS 8.3 以降)adaptivePresentationStyleForPresentationController:traitCollection:メソッドを実装しUIAdaptivePresentationControllerDelegateます。

- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection {
    // This method is called in iOS 8.3 or later regardless of trait collection, in which case use the original presentation style (UIModalPresentationNone signals no adaptation)
    return UIModalPresentationNone;
}

UIModalPresentationNoneあなたの場合はポップオーバーを表示する元のプレゼンテーションスタイルを使用するようにプレゼンテーションコントローラーに指示します。

于 2015-05-27T13:35:19.343 に答える