最后更新:2017-12-19

在第一天中, 我们完成了项目的基本设置、隐藏Dock、显示和隐藏Popover等操作,接下来的这章中, Pap.er将会去搭建对应 UI.

一、设置Popover对应颜色

官方的Pap.er的箭头部分色值为RGB=(34, 34, 34)

查找官方的NSPopover API,发现没有设置对应和方法, 尝试更改ContentViewController.view, 但是也是没有对应的属性来设置, 通过 Stack Overflow, 可以更改颜色设置.

Step1: 新建一个继承于NSView的子类,命名为: MainPopoverRootView;

Step2: 再新建一个继承于NSView的子类,命名为: MainPopoverBackgroundView;

Step3: 对新建的 MainPopoverRootViewMainPopoverBackgroundView 分别做如下的设置:


// MainPopoverRootView
class MainPopoverRootView: NSView { override func viewDidMoveToWindow() {
let aFrameView = self.window?.contentView?.superview let aBGView = MainPopoverBackgroundView(frame: aFrameView?.bounds ?? .zero)
aFrameView?.addSubview(aBGView, positioned: .below, relativeTo: aFrameView)
aBGView.autoresizingMask = [.width, .height]
super.viewDidMoveToWindow()
}
} // MainPopoverBackgroundView
class MainPopoverBackgroundView: NSView { override func draw(_ dirtyRect: NSRect) {
super.draw(dirtyRect) NSColor(red: 34/255.0, green: 34/255.0, blue: 34/255.0, alpha: 1).set()
dirtyRect.fill()
}
}

Step4: 打开 MainPopoverViewController.xib,设置如下:

Step5:运行结果如下:

二、构建主界面

  1. 打开 MainPopoverViewController.xib,设置宽高为: 285 * 600

  2. 将解析的资源里面的 paperHeaderreload_buttonSettingsdownload 文件拖入资源文件夹

Pap.er 模仿 - 第二天的更多相关文章

  1. Pap.er 模仿 - 第一天

    最后更新: 2017-12-15 一. 项目初始化 解析对应的资源, 下载Pap.er之后,需要解析里面的资源. 采用如下的方法: http://blog.csdn.net/xuzihai0703/a ...

  2. virut详细分析

    Virut分析 0x00.综合描述 virut样本的执行过程大体可以分为六步:第一步,解密数据代码,并调用解密后的代码:第二步,通过互斥体判断系统环境,解密病毒代码并执行:第三步,创建内存映射文件,执 ...

  3. Python-Day1 Python基础学习

    一.Python3.5.X安装 1.Windows Windows上找度娘搜索“Python for windows下载”就OK了,安装的时候可以勾选设置环境变量,也可以安装完手动设置,这样在cmd中 ...

  4. windows窗口分析,父窗口,子窗口,所有者窗口

    (本文尝试通过一些简单的实验,来分析Windows的窗口机制,并对微软的设计理由进行一定的猜测,需要读者具备C++.Windows编程及MFC经验,还得有一定动手能力.文中可能出现一些术语不统一的现象 ...

  5. CSS3 3D变形效果

    CSS3 3D变形效果 CSS3 transform3D变形 transform的含义是:改变,使-变形:转换 三维变换使用基于二维变换的相同属性,如果您熟悉二维变换,你们发现3D变形的功能和2D变换 ...

  6. mongo数据库的常见操作

    连接mongodb数据库的命令查看对应数据库mongo.exeuse shujukuming;db.opportunity.findOne({"id":5}); db.opport ...

  7. 爬取5K分辨率超清唯美壁纸

    目录 爬取5K分辨率超清唯美壁纸 简介 编写思路 使用教程 演示图片 完整源代码 @ 爬取5K分辨率超清唯美壁纸 简介 壁纸的选择其实很大程度上能看出电脑主人的内心世界,有的人喜欢风景,有的人喜欢星空 ...

  8. Mac 上有哪些比较有意思的小软件?

    文章素材来源:微博.新浪看点 收录于:风云社区(SCOEE)[提供mac软件下载] 更多专题,可关注小编[磨人的小妖精],查看我的文章,也可上[风云社区 SCOEE],查找和下载相关软件资源. (一) ...

  9. keras 自定义 custom 函数

    转自: https://kexue.fm/archives/4493/,感谢分享! Keras是一个搭积木式的深度学习框架,用它可以很方便且直观地搭建一些常见的深度学习模型.在tensorflow出来 ...

随机推荐

  1. ASP.NET Core中间件实现分布式 Session(转载)

    ASP.NET Core中间件实现分布式 Session 1. ASP.NET Core中间件详解 1.1. 中间件原理 1.1.1. 什么是中间件 1.1.2. 中间件执行过程 1.1.3. 中间件 ...

  2. PLSQL PL/SQL Developer Oracle 使用技巧 常用设置 卡顿问题 病毒防范( 附带:配置文件)

    相关工具版本: PL/SQL Developer: 9.0.4.1644 Oracle : Oracle Database 10g Enterprise Edition Release 10.2.0. ...

  3. luogu4777[模板]拓展中国剩余定理题解

    题目链接 https://www.luogu.org/problemnew/show/P4777 分析 扩展\(CRT\)就是解决模数不互质的情况,说是扩展\(CRT\),其实都是扩欧... 先来考虑 ...

  4. android-studio-ide 安装到运行第一个helloword,坑记录

    1: 安装是提示  机器虚拟化问题,系统如开启了Hyper-V,必须关闭服务 2:安装完后,建立第一个项目,gradle build 一直转圈,最后报错 Gradle project sync fai ...

  5. 前端基础(八):Font Awesome(图标)

    一.font awesome简介 目前图标总数共有519个; 不依赖Javascript 矢量图形,无限缩放 免费,可用于商业 CSS控制样式,自定义图标颜色,大小,阴影,一切可能实现的效果 支持re ...

  6. 使用iframe框架时,实现子页面内跳转到整个页面,而不是在子页面内跳转

    首先先来描述一下我所遇到的问题,我在一个首页的index.jsp页面中用到了iframe框架,见下图 在iframe中引入jsp页面的路径,是几个iframe框架组合成的一个完整的页面,但是他们的存在 ...

  7. zabbix上添加交换机监控记事

    ​ zabbix上添加交换机监控记事 ​ 第一次使用zabbix来添加监控华为s5720交换机,根本找不到头绪,像个无头的苍蝇一样的百度来处理,结果都没有任何效果,给自己增加了很多痛苦和心烦,增加不少 ...

  8. input checkbod 全选 反选

      <script>             var CheckBox=div.getElementsByTagName('input');                         ...

  9. TCP 的三次握手和四次挥手,TCP 的流量控制和拥塞控制

    70.TCP协议的三次握手与四次挥手70.1.TCP报文结构   1.源端口号:表示发送端端口号,字段长为16位.  2.目标端口号:表示接收端口号,字段长为16位.  3.序列号:表示发送数据的位置 ...

  10. Java调用和回调总结(2)

    Java调用和回调总结(2) 调用的种类 调用有3种, 普通调用(同步调用), 异步调用, 异步回调. 三种调用的特点 普通调用: 也叫做同步调用 , 最常见的调用, 会造成阻塞. 异步调用 : 异步 ...