swift - 在横向模式下无法正确显示Popover

时间:2016-07-25 16:10:42

标签: ios swift popover

Popover在横向模式下显示时会显示整个屏幕,但它在纵向模式下可以正常工作。此外,当我在横向模式下点击弹出窗口时,它不会消失。

我通过故事板连接了popover。在popoverviewcontroller里面,我放置了一个包含按钮的视图。 popoverviewcontroller的viewdidload()的代码是:

override func viewDidLoad() {
    super.viewDidLoad()

    self.preferredContentSize = popoverView.frame.size
        }

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}

人像:

enter image description here

景观:

enter image description here

2 个答案:

答案 0 :(得分:2)

您必须像这样向您的班级添加UIPopoverPresentationControllerDelegate

swift 3

import UIKit

class ViewController: UIViewController, UIPopoverPresentationControllerDelegate {
    ...

第二步,添加以下功能:

func adaptivePresentationStyle(for controller: UIPresentationController, traitCollection: UITraitCollection) -> UIModalPresentationStyle {
    return UIModalPresentationStyle.none
}

说明:通过将UIModalPresentationStyle作为none返回,将保留原始演示文稿样式,并且您的弹出框不会以横向方向拉伸到屏幕底部。

答案 1 :(得分:0)

@ Jake2Finn的答案适用于 Swift 4.0

特质参数是解决景观问题所需的:

traitCollection: UITraitCollection

没有它,自适应功能...仅适用于人像。