专栏首页macOS 开发学习Mac开发基础练习:制作一个状态栏(NSStatusBar)上的App(一)

Mac开发基础练习:制作一个状态栏(NSStatusBar)上的App(一)

项目开发是最有效果的学习途径(没有之一),现在我们从开发一个小的状态栏上的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,并使用xib

1.6 设置popviewController的view

设置SBPopViewController的视图内容

1.7 选中ViewController.m文件,实现代码

设置contentViewController

现在再次运行工程,如果没有错误,我们就可以看到大致类似下面的这样界面了,这样我们就实现了可以在系统状态栏中添加应用的常驻标志,点击它,并可以弹出一个内容展示窗口了。

运行结果

关于这个练习项目的演示代码,有兴趣的同学可以在github来下载StatusBarDemo 下一篇,我们继续来实现关闭popover、 鼠标事件的监听,window窗口的处理以及应用退出的方法 祝大家玩的愉快~

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Mac开发基础练习:制作一个状态栏(NSStatusBar)上的App(二)

    1.1 选中ViewController.m文件,添加鼠标左键点击事件监听,实现代码如下图:

    代码行者
  • 课程上线 -“新手入门 : Windows Phone 8.1 开发”

    经过近1个月的准备和录制,“新手入门 : Windows Phone 8.1 开发”系列课程已经在Microsoft 虚拟学院上线,链接地址为:http://w...

    ShiJiong
  • 一个Mac系统,能让程序员编程效率提升30%

    Mac 系统一向以提供高效的工作环境著称,iOS、Android和服务端程序员都可以轻松的在Mac上搭建舒适的开发环境。

    一墨编程学习
  • App项目实战之路(四):UI篇

    上一篇文章[原型篇]发布之后,就开始设计UI了,包括Icon和界面UI,周一到周五晚上一般花两到三到小时,周六日的时候则有五六个小时,最终用了一个星期多才设计完...

    Keegan小钢
  • Mac下提升工作效率的方式

    Mac 系统一向以提供高效的工作环境著称,iOS、Android和服务端程序员都可以轻松的在Mac上搭建舒适的开发环境。笔者主要从事iOS开发,一般在macbo...

    哲洛不闹
  • python编程

    使用python编写客户端不是一件很复杂的事情。比如说,基本上不管是mac版本,还是windows版本、linux版本,一般python都默认安装了Tkinte...

    企鹅号小编
  • macOS 入门指南

    如果你刚刚买了一台 Mac 电脑,却发现用起来不是很顺手;或者你工作、生活使用的是 Windows 电脑,偶尔接触到 Mac 电脑,却不知道怎么使用,我希望通过...

    程序员充电站
  • 开发者的如何优雅的使用OSX

    Mac对于IT开发者来说是最好的开发工具,没有之一。

    老马
  • 开发者的如何优雅的使用OSX

    Mac对于IT开发者来说是最好的开发工具,没有之一。 但是对于大部分人来说,第一个接触的PC操作系统都是Windows系统,此文将带大家优雅的快速学习和使用Ma...

    老马
  • 一步一步,开始上手Mac 开发(一)

    通过本文,你可以创建你的第一个Mac Application,编译并指定版本号,而且经过练习,你应该掌握:

    代码行者
  • 手把手 | 如何在你的iPhone上建立第一个机器学习模型(Apple最新CoreML框架入门)

    大数据文摘
  • 苹果自研ARM架构芯片,iOS系统更新「抄袭」安卓?10年来最精彩的WWDC值得你起立鼓掌

    2020年,许多顶级会议都转为线上,万众瞩目的苹果WWDC发布会也31年来首次转移到线上举办,赶了一波「virtual」的风潮。

    新智元
  • 用NW.js构建跨平台桌面应用(2)-原生界面API

    实际取得的值( 表示manifest文件中配置的应用名 ): - Win: $LOCALAPPDATA%/<name> - Linux: ~/.config/<...

    江米小枣
  • 抓包工具Charles

    抓包(packet capture)就是将网络传输发送与接收的数据包进行截获、重发、编辑、转存等操作。也用来检测网络安全。抓包也经常被用来进行数据截取等。对于...

    用户7798898
  • 苹果新系统很鸿蒙!iPad终于能写代码了,iPhone竟成异地恋神器 | WWDC 2021

    在全球疫情还未缓解的情况下,今年,苹果的WWDC开发者大会,和去年一样全场除了库克“空无一人”。

    量子位
  • 革命性移动端开发框架-Flutter时间简史

    说到Flutter,可能很多同学都会将它和这几个词关联起来:新兴的、移动端、动态化、跨平台、开发框架。

    猿哥
  • STM32+CH395Q(以太网)基本控制篇(自建物联网平台)-功能测试-Android使用组播绑定CH395Q,并通过MQTT和模组实现远程通信控制 这节测试一下

    <p><iframe name="ifd" src="https://mnifdv.cn/resource/cnblogs/ZLIOTB/CH395Q/my.h...

    杨奉武
  • Foxmail新建文件夹后,邮件连同文件夹都找不到了

    发现这篇文章的阅读量巨高,所以就分享一下:https://kunnan.blog.csdn.net/article/details/43523741

    公众号iOS逆向
  • 2年内彻底摆脱英特尔,苹果重磅发布自研Mac芯片,并对“五大系统”再升级

    疫情之下,苹果不得不把今年WWDC从线下搬到了线上,但内容和惊喜没变,不论是iOS 14界面大变样,越来越“安卓化”,还是自研Mac芯片的正式亮相,都不失为大会...

    镁客网

扫码关注云+社区

领取腾讯云代金券