Popover 是一个新型的弹出窗口。

apple 文档里面这样说:

NSPopover类提供了一种方法在现有相关内容在屏幕上显示更多的内容。Popover窗口定位相对于现有内容。

锚点(anchor )是用来表示这两个单元的内容之间的关系。Popover窗口指定视觉特征出现,以及确定哪些用户交互行为将导致弹出窗口关闭。瞬态Popover窗口关闭以应对大多数的用户交互行为,而

而半瞬态Popover窗口关闭当用户与包含弹出窗口的定位视图的窗口。应用程序定义的Popover窗口的行为通常不由开发人员方面关闭。

系统相对于其定位视图自动定位每个popover窗口,popover窗口跟随其定位视图移动。定位视图内的一个定位矩形内可以指定额外的粒度。

popover窗口通过适当的delegate 方法实现拖动时,它可以分离成为一个独立的窗口。

我英语还不够好,就算借助翻译,也觉得很难懂。好在我们大致知道了。我们先不做任何说明,先实现一个例子,将一个这样的窗口显示出来,并做到控制它关闭。

首先建立一个cocoa 普通应用。

import Cocoa@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
    <pre name="code" class="plain" style="color: rgb(187, 44, 162); font-size: 11px; font-style: italic;">@IBOutlet weak var window: NSWindow!
    func applicationDidFinishLaunching(aNotification: NSNotification) {// Insert code here to initialize your application}func applicationWillTerminate(aNotification: NSNotification) {// Insert code here to tear down your application}
contentViewController 属性 -- 视图控制器管理popover的内容
现在我们需要提供一个ViewController,来给popover提供显示内容。要做到这一点,手下要建立一个NSViewController的子类,选择建立xib。你可以在这个xib里面添加一些内容,文本了,按钮拉等等。反正我们这次不打算用,你可以任意。

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {var popover : NSPopover?lazy var poverController : PopoverController? = {return PopoverController(nibName: "PopoverController", bundle: nil)}()@IBOutlet weak var window: NSWindow!

接着我们在window变量定义前面添加两个属性。就不解释了。

我们打算点击一个按钮,然后让这个popover窗口弹出来,再点击一个按钮,让这个popover窗口关闭。所以我么要在mainmenu.xib里面添加两个按钮。并建立相应的action。代码如下。

   @IBAction func ClosePopover(sender: AnyObject) {popover?.performClose(self)}@IBAction func DisplayPopover(sender: AnyObject) {if ( popover == nil ) {popover = NSPopover()self.window.contentView?.addSubview((poverController?.view)!)popover!.contentViewController = poverControllerlet rc = NSMakeRect(40, 40, 100, 200)popover!.showRelativeToRect(rc, ofView: (poverController?.view)!, preferredEdge: NSRectEdge.MinY )}}

上面就是两个Action的代码。写这个文档之前,这些代码是测试过的,所以它能够工作。当你点击第一个按钮时候,会弹出popover窗口,点另一个时候popover窗口会消失。有点小问题,只能一次,第二次点击的时候,就没反应了。--嗯,但这不是问题。后面我还会继续研究,就这个话题继续下去,因为我可以确定这个东西会很有用。

Popover 初探相关推荐

  1. 2021年大数据Flink(九):Flink原理初探

    Flink原理初探 Flink角色分工 在实际生产中,Flink 都是以集群在运行,在运行的过程中包含了两类进程. JobManager: 它扮演的是集群管理者的角色,负责调度任务.协调 checkp ...

  2. 从壹开始微服务 [ DDD ] 之一 ║ D3模式设计初探 与 我的计划书

    缘起 哈喽大家周四好!又是开心的一天,时间过的真快,我们的 <从壹开始 .net core 2.1 + vue 2.5 >前后端分离系列共 34 篇已经完结了,当然以后肯定还会有更新和修改 ...

  3. 经典算法研究系列:二、Dijkstra 算法初探

    经典算法研究系列:二.Dijkstra 算法初探  July   二零一一年一月 ====================== 本文主要参考:算法导论 第二版.维基百科. 写的不好之处,还望见谅. 本 ...

  4. las格式测井曲线_邹榕,等:顺北和托甫台区块奥陶系断裂结构单元测井响应特征初探...

    引用格式:邹榕,徐中祥,张晓明,等.顺北和托甫台区块奥陶系断裂结构单测井响应特征初探[J].油气藏评价与开发,2020,10(2):18-23.ZOUR, XU Z X, ZHANG X M, et ...

  5. 2018-4-15摘录笔记,《网络表征学习前沿与实践》 崔鹏以及《网络表征学习中的基本问题初探》 王啸 崔鹏 朱文武

    1.来源:<网络表征学习前沿与实践>  崔鹏 (1)随着数据的增加以及计算机计算速度的增加,想当然的以为速度快了,数据再多也是可以自己算的,但是若是数据之间存在着复杂的关系,那么处理一个样 ...

  6. python argparse_Python 命令行之旅:初探 argparse

    本文首发于 HelloGitHub 公众号,并发表于 Prodesire 博客. 前言 你是否好奇过在命令行中敲入一段命令后,它是如何被解析执行的?是否考虑过由自己实现一个命令行工具,帮你执行和处理任 ...

  7. HTML5+MUI+HBuilder 之初探情人

    07,08年那会儿正当Java火爆,C/C++仍是广泛运用的一门语言的时候,所以我的大学都献给了C/C++和Java.当诺基亚的倒闭成为按键机时代衰落的标志时,移动APP的开发也如破堤之洪.爆炸式的崛 ...

  8. 使用Mahout搭建推荐系统之入门篇3-Mahout源码初探

    2019独角兽企业重金招聘Python工程师标准>>> 用意: 希望了解Mahout中数据的存储方式, 它如何避免java object带来的冗余开销.学完知识,要进行些实战 去分析 ...

  9. SAP RETAIL 补货类型RF之初探 II

    SAP RETAIL 补货类型RF之初探 II 1, 补货参数 – TargetCoverage字段不能为空. 如果不维护这个参数值,系统会提示:Target stock calculated dyn ...

最新文章

  1. 美国诚实签经验——着装,戒指,手表装土豪,医生预约单,流水、房产和工作证明...
  2. python代码画简单图-python绘制简单彩虹图
  3. Mybatis动态的添加删除列
  4. bat 发邮件与手机交互_售价17500元!华为首款5G折叠屏手机来了,更多新机细节曝光...
  5. 什么是常驻内存式的开发模式?_“直播+”模式下的直播系统开发需要注意什么问题?...
  6. Python3——字典
  7. 海报样机模型帮助以专业的方式展示你的设计
  8. 蓝桥杯 BASIC-27 基础练习 2n皇后问题
  9. php 数组任意位置插入值
  10. python---数据清洗
  11. Ubuntu 意外死机 (Linux Crash/Hang)解决
  12. Qt环境下调用捷宇高拍仪OCX
  13. 博客中常用的Emoji表情整理,欢迎自取
  14. 定积分的基本性质5 区间可加性
  15. 电影: 嘲笑过片名后,我哭着看完这部片
  16. xgboost原理(无推导就轻易理解)
  17. Windows批处理(cmd/bat)常用命令教程
  18. WinCE驱动开发问题精华集锦 [转]
  19. windows下禁用时间同步(防止自动变回来)
  20. 解决Ubuntu:e1000e无法驱动无法上网问题

热门文章

  1. Html help安装步骤,怎样安装html help workshop
  2. 小狐狸ChatGPT付费创作系统1.57独立开源版 + 小程序VUE前端+APP端 最全安装配置教程
  3. mbac 联网程序及使用教程下载(附1.03补丁)
  4. SQL注入攻击如何防止
  5. Android 手机玩转技巧
  6. 问题之PreparedStatement executeBatch() 更新仅部分有效
  7. Ubuntu+win10双系统删除win10,仅保留Ubuntu方法并扩容Ubuntu方法
  8. 笔记软件大战 | 印象,有道,为知和OneNote
  9. java xsd校验,java中使用xsd验证xml | 学步园
  10. markdown编辑器@uiw/react-md-editor深入使用