[ios][swift]在iPhone中使用popover

作者: 芮星晨 | 来源:发表于2016-02-24 17:04 被阅读5940次

popover是一种非常好的表现形式,让用户输入一些数据,进行复杂的选择,展示复杂的数据,用popover,咱们的App可以活得更滋润,但是在iOS8之前,popover只能在iPad中使用,iOS8之后,终于可以在iPhone中使用popover了,虽然早就有了第三方的支持,不过自己来实现一下岂不是更好? here we go.

1.新建一个single view application,这个不说了.
2.新建一个viewcontroller,取名叫PopViewController,勾选创建Xib,当然在SB中关联一个view controller也是OK的,这里我们用Xib吧.

3.让ViewController (不是PopViewController啊亲们)遵循UIPopoverPresentationControllerDelegate协议,同时实现adaptivePresentationStyleForPresentationController方法,之后,该文件代码如下

class ViewController: UIViewController,UIPopoverPresentationControllerDelegate {
    
    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    func adaptivePresentationStyleForPresentationController(controller: UIPresentationController) -> UIModalPresentationStyle {
        return .None
    }
}

4.在SB中拖进去一个Button,并且绑定Outlet和点击事件,事件的代码如下

    @IBOutlet var btn: UIButton!
    
    @IBAction func btnTap(sender: AnyObject) {
        let pop = PopViewController()
        pop.modalPresentationStyle = .Popover
        pop.popoverPresentationController?.delegate = self
        pop.popoverPresentationController?.sourceView = btn
        pop.popoverPresentationController?.sourceRect = CGRectZero
        self.presentViewController(pop, animated: true, completion: nil)

    }

运行,点击button,会出现效果如下

虽然效果不好,但是至少已经有一个弹出的窗口啦,下面来优化之

PopViewController.xib中添加一个segmented control,让他和屏幕的中心对齐,宽相等,同时设置View背景色为灰色

修改btnTap方法:

 @IBAction func btnTap(sender: AnyObject) {
        
        let pop = PopViewController()
        
        pop.modalPresentationStyle = .Popover
        pop.popoverPresentationController?.delegate = self
        pop.popoverPresentationController?.sourceView = btn
        pop.popoverPresentationController?.sourceRect = btn.bounds
        pop.preferredContentSize = CGSizeMake(100, 100)
        pop.popoverPresentationController?.permittedArrowDirections = .Down
        self.presentViewController(pop, animated: true, completion: nil)
        
    }

运行一下,效果如下

如果不需要箭头,可以

pop.popoverPresentationController?.permittedArrowDirections = .None

一般常见的popover的显示方式是点击navigationItem的时候显示一个可以滑动的table供用户选择,我们来实现一下,过程和上面一样

实现效果图:

不带箭头的

相关文章

网友评论

    本文标题:[ios][swift]在iPhone中使用popover

    本文链接:https://www.haomeiwen.com/subject/rvrikttx.html