ZhouJiatao's Blog

Popover

最终效果

result

步骤

设置Segue

按下control键,拖拽以连接两个ViewController,选择 “Present As Popover”;
设置Segue的Identifier为”PopoverSegue”

segue

(为了直观讲解,我们把绿色的叫GreenViewController,蓝色的叫BlueViewController)

调整BlueViewController的尺寸

Storyboard中选中BlueViewController。

为了方便观察尺寸的变化,我们先把“Attributes inspector > Simulated Metrics > Size”选为Freeform.
而后,在”Size inspector ”下,设置Width,Height属性(这里的设置不会影响到运行时的尺寸),并观察Storyboard,以找到合适的尺寸。
观察发现采用width=100,height=50的尺寸比较合适。
“Attributes inspector > View Controller”下,勾选“Use preferred Explicit Size”,并输入width、height。在程序运行的时候,该ViewController就会以这个尺寸显示。
size

GreenViewController实现UIPopoverPresentationControllerDelegate

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

重写GreenViewController的prepareForSegue方法

在prepareForSegue方法中获取到BlueViewController实例,并进行属性设置

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == “PopoverSegue” {
        let popoverContent = segue.destinationViewController
        popoverContent.modalPresentationStyle = .Popover
        let popover = popoverContent.popoverPresentationController!
        popover.delegate = self
    }
}