02-Popover代码实现

Popover代码实现

  • 这一小节我们主要通过代码来实现popover跳转来学习popover更多的一些常用属性

  • 效果预览

02-Popover代码实现_第1张图片

  • ViewController.swift

import UIKit

class ViewController: UIViewController {
    @IBOutlet weak var testButton: UIButton!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
    }

    @IBAction func textButtonClick(sender: AnyObject) {
        print("你点击到人家啦~~~")
    }
    //UIBarButtonItem
    @IBAction func popoverButtonClick(sender: AnyObject) {
        //1.创建popover的目标控制器
        let desVC = UIViewController()

        desVC.view.backgroundColor = UIColor.purpleColor()
        //2.设置控制器跳转样式
        desVC.modalPresentationStyle = UIModalPresentationStyle.Popover
        //3.获取目标控制器的popover对象
        let popoverVC = desVC.popoverPresentationController
        popoverVC?.backgroundColor = UIColor.redColor()
        //4.设置箭头方向
        popoverVC?.permittedArrowDirections = UIPopoverArrowDirection.Unknown
        //4.跳转
        //非UIBarBUttonItem
        if let btn = sender  as? UIButton
        {
            //设置来源视图
            popoverVC?.sourceView = btn
            //设置参考点
            popoverVC?.sourceRect = btn.bounds
            //忽略外部点击 默认为false  如果设置为true 表示 点击外部popover不会消失 需要手动添加按钮消失  如果为false 表示点击外部视图 popover会消失
            desVC.modalInPopover = false
            //设置点击穿透视图
            popoverVC?.passthroughViews = [testButton]
        }
        else if let item = sender as? UIBarButtonItem //UIBarBUttonItem
        {
            //UIBarButtonItem 设置参考点无效  设置来源视图是通过barButtonItem属性
            popoverVC?.barButtonItem = item


        }

        //model跳转
        presentViewController(desVC, animated: true) { () -> Void in

        }

    }

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


}
  • 总结
  • popover属性

    • permittedArrowDirections:设置箭头方向 系统默认为UnKnown
    • sourceView:来源视图(只针对非UIBarButtonItem)
      • 原因:UIBarButtonItem不是UIView的子类
    • barButtonItem:来源视图(只针对UIBarButtonItem)
    • sourceRect:目标参考点(只针对非UIBarButtonItem,UIBarButtonItem设置无效)
    • passthroughViews:设置穿透视图(可以点击该视图交互事件)
  • UIViewController属性

    • preferredContentSize:设置popover的大小
    • modalInPopover:是否忽略外部点击(默认为false 如果设置为true 表示 点击外部popover不会消失 需要手动添加按钮消失 如果为false 表示点击外部视图 popover会消失)

你可能感兴趣的:(02-Popover代码实现)