在横向上为iPhone 6 Plus设置UIModalPresentationStyle?

Jor*_*n H 3 ios uipresentationcontroller

我想在所有设备和所有方向上的弹出窗口中始终显示视图控制器.我试图通过采用UIPopoverPresentationControllerDelegate和设置sourceView和来完成这个sourceRect.故事板中的segue被配置为Present As Popover segue.这适用于所有设备和方向,除了横向的iPhone 6 Plus.在这种情况下,视图控制器在表单中从屏幕底部向上滑动.如何防止它始终出现在弹出框中?

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
}
Run Code Online (Sandbox Code Playgroud)

Jos*_*hua 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;
}
Run Code Online (Sandbox Code Playgroud)

UIModalPresentationNone 告诉演示控制器使用原始演示样式,在您的情况下将显示弹出窗口.

  • 没关系,这仍然按预期工作.问题是我在设置委托之前就已经提出了这个问题(这应该是文档所说的).在呈现它之前设置其`popoverPresentationController`的委托已解决了该问题. (3认同)