02-Popover代码实现

Popover代码实现

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

  • 效果预览

这里写图片描述

  • 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会消失)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值