项目开发是最有效果的学习途径(没有之一),现在我们从开发一个小的状态栏上的App入门,通过逐步实现功能,来渐渐上手熟悉Mac OSX上的基础控件使用方法。通过本练习,希望能够帮助有兴趣的同学掌握如下基础知识:
* NSStatusBar 控件的使用
* NSPopover 的基本使用
* (鼠标)事件监听方法
* 结束App的方法
好了,开始动手!
1.1 创建演示项目:StatusBarDemoApp
选取项目模版 项目名称在Mac OSX系统中,屏幕的右上角就是我们说的状态栏(NSStatusBar),一直是常驻应用的必争之地。我们只需要创建一个item ,然后将创建好的item加载到状态即可,我们只需要使用NSStatusBar的statusItemWithLength:方法就可以了(这个方法会创建好一个NSStatusItem,并且将它自动的添加到状态栏中)。
1.2 选中ViewController.m文件,添加代码
实现代码1.3 添加图片资源
添加图片资源到项目工程中项目运行结果如果没有出错,运行项目,你应该看到一个空的窗口,而且在屏幕的右上角已经出现了我们应用的常驻标志^_^,是不是感觉很容易啊~
这时你点击状态栏上的图标,它没有任何反应,因为我们还没有给它添加事件响应的方法。我们希望点击它能够弹出一个视图,显示它的内容或者功能,下面我们就来接着实现它。
NSPopover 提供了在屏幕内容视图上显示额外信息内容的一种方式(其实这个类似于在iPad开发中是常见的UIPopoverPresentationController),它的定位相对与现有内容。
在ViewController中添加popover属性,并在viewDidLoad中进行初始化和配置。
1.4 现在ViewController.m实现代码:
添加popover代码,并设置如果这时运行项目工行,我们尝试点击状态栏图标,系统会提示[General] The contentViewController ((null)) or contentViewController.view is nil.这个错误信息,是因为我们没有为popover设置一个可以显示的内容视图控制器,下面我们来创建一个NSViewController来管理popover的内容视图:
1.5 添加SBPopViewController
添加新文件 创建SBPopViewController,并使用xib1.6 设置popviewController的view
设置SBPopViewController的视图内容1.7 选中ViewController.m文件,实现代码
设置contentViewController运行结果现在再次运行工程,如果没有错误,我们就可以看到大致类似下面的这样界面了,这样我们就实现了可以在系统状态栏中添加应用的常驻标志,点击它,并可以弹出一个内容展示窗口了。
关于这个练习项目的演示代码,有兴趣的同学可以在github来下载StatusBarDemo
下一篇,我们继续来实现关闭popover、 鼠标事件的监听,window窗口的处理以及应用退出的方法
祝大家玩的愉快~
网友评论
mac 如果通过程序隐藏menu栏 或者系统设置自动隐藏菜单栏后 点击程序窗口 菜单栏不自动显示如果解决 谢谢?
只是系统开启自动隐藏状态栏后 拖动窗口后偶尔移动鼠标到屏幕顶部无法自动调出状态栏