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.
}
人像:
景观:
答案 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
没有它,自适应功能...仅适用于人像。