美文网首页
利用UIPopoverPresentationControlle

利用UIPopoverPresentationControlle

作者: 红茶绅士 | 来源:发表于2017-04-21 14:49 被阅读424次

iOS8之后新增了UIPopoverPresentationController,可以实现类似于iPad的UIPopoverController.
Demo地址

第一步:
打开Main.storyboard,在默认的ViewController中添加一个UIButton,然后新建一个UIView
Controller,并将UIButton的action事件指向新创建的ViewController.
如下图所示:

Main.storyboard示例图.png

第二步:
打开ViewController.swift,并添加代码.

import UIKit

class ViewController: UIViewController, UIPopoverPresentationControllerDelegate {

    @IBOutlet weak var button: UIButton!
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

        let vc = segue.destination
        vc.modalPresentationStyle = .popover
        //箭头所指区域
        vc.popoverPresentationController?.sourceView = button
        vc.popoverPresentationController?.sourceRect = button.bounds
        //箭头方向
        vc.popoverPresentationController?.permittedArrowDirections = .up
        //设置代理
        vc.popoverPresentationController?.delegate = self
        //弹出窗口大小
        vc.preferredContentSize = CGSize(width: 200, height: 300)
    }
    
    //iPhone下默认是.overFullScreen(全屏显示),需要返回.none,否则,没有弹窗效果。iPad不需要
    func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
        return .none
    }
    
}

注意事项:

  • 遵守UIPopoverPresentationControllerDelegate代理
  • 实现adaptivePresentationStyle代理方法,并返回.none.(iPhone下默认是.overFullScreen)
  • 如果按钮不是UIButtton,而是导航栏上的UIBarButtonItem.由于该控件没有指定的frame,无法设置sourceViewsourceRect,将箭头所指区域下的两行代码修正一下即可:
    vc.popoverPresentationController?.barButtonItem = self.navigationItem.rightBarButtonItem;
弹窗效果.png

相关文章

  • 利用UIPopoverPresentationControlle

    iOS8之后新增了UIPopoverPresentationController,可以实现类似于iPad的UIPo...

  • 弹出UIPopoverPresentationControlle

    封装一个方法,把基本的属性设置都写进里面,外面只管调用即可 细心的可以看到这里我并没有传弹出控制的可见内容,也就是...

  • 使用UIPopoverPresentationControlle

    iOS8提供了一个非常好用的弹出视图控制器,用来做这种效果: 这个在iOS8以后可以很轻松的实现,用到的一个类叫U...

  • 利用与被利用

    今天看了一个视频,复旦的教授说“朋友无功利之用”。她大概的意思是说“你之所以交朋友,并不是因为朋友有用。我们之...

  • 利用与被利用

    愚拙的,不屑去骗,也甘于被骗;机灵的,不甘被利用,也时常去骗。“骗”,不止于欺骗,也有获取信息,掠夺物品。 身边就...

  • Selenium自动化

    定位元素 利用ID定位 利用tag name定位 利用link text定位 利用class name定位 利用n...

  • 利用

    被利用,说明你还有可用之处。 人是社群动物,人和人都是相互依存的。所谓的商业文明,说到底是因交换而存在而繁盛。交换...

  • 利用

    子时,晴夜朗空,一轮明月高悬。若是平时,这片树林该是一夜清幽。然而,此时却有两人在林间追逐,惊起禽鸟无数,...

  • 利用

    父亲因感冒住院了。 儿子来医院照看。 “爸,我俩是互相利用的!我利用你把我养大,你利用我给你养老!可万一我对你不好...

  • 利用

    中国的汉字是个好东西,因为它有多义。 利用:利于发挥效用,口语中多指贬义,出自《老子.道德经》:“三十辐共一毂,当...

网友评论

      本文标题:利用UIPopoverPresentationControlle

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