如何更改弹出窗口的大小

ice*_*806 25 popover ios swift

我无法更改popover演示文稿的大小.这是我到目前为止所拥有的

 override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) // func for popover
{
    if segue.identifier == "popoverView"
    {
        let vc = segue.destinationViewController

        let controller = vc.popoverPresentationController

        if controller != nil
        {
            controller?.delegate = self
            controller?.sourceView = self.view
            controller?.sourceRect = CGRect(x:CGRectGetMidX(self.view.bounds), y: CGRectGetMidY(self.view.bounds),width: 315,height: 230)
            controller?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

到目前为止,所有这一切都是以弹出窗口为中心并移除箭头,这很好.但它没有调整容器的大小.任何帮助将不胜感激.谢谢.

当我使用preferredContentSize时,我收到错误"无法分配给属性:'preferredContentSize'是不可变的"

bey*_*ulf 54

在显示的视图控制器上设置首选内容大小而不是 popoverPresentationController

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) // func for popover
    {
        if segue.identifier == "popoverView"
        {
            let vc = segue.destinationViewController

            vc.preferredContentSize = CGSize(width: 200, height: 300)

            let controller = vc.popoverPresentationController

            controller?.delegate = self
            //you could set the following in your storyboard
            controller?.sourceView = self.view
            controller?.sourceRect = CGRect(x:CGRectGetMidX(self.view.bounds), y: CGRectGetMidY(self.view.bounds),width: 315,height: 230)
            controller?.permittedArrowDirections = UIPopoverArrowDirection(rawValue: 0)

        }
    }
Run Code Online (Sandbox Code Playgroud)


Xei*_*han 21

我通过故事板修复它:单击您的控制器单击属性检查器ViewController>选中使用首选显式大小和输入值. 检查图像


And*_*per 7

使用自动布局

值得一提的是,您可以使用布局约束而不是将 preferredContentSize 设置为特定值。为此,

  1. 将此添加到您的视图控制器:

    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
        self.preferredContentSize = self.view.systemLayoutSizeFitting(
            UIView.layoutFittingCompressedSize
        )
    }
    
    Run Code Online (Sandbox Code Playgroud)
  2. 确保您有从弹出视图到控制器根视图的约束。这些可以是低优先级,空间 >= 0 约束。


小智 5

与上面谢山的回答类似,我通过故事板设置了这个。
除了“演示文稿”还需要是“表格”。

在此输入图像描述