Mac 开发快速查阅目录

以下内容转自 《Leopard轻松编程:帮你节省代码

目录:

- Core Animation 核心动画

- 视图描绘

- 和快速查看协同工作

- 管理多视图(针对自定义的分页控件等)

- 图片或者视图以iPhoto形式的动画表格进行呈现

- 设置你自己的智能组、播放列表、目录

- 在菜单里加入自定义视图

- 菜单增强

- 打印界面

- 全局类型标志

- 像邮件程序一样使用分栏视图

- 将文档图标显示在标题条内

- 类似iPhoto工具条形式的HUD窗口

- 控制窗口的材质、金属形式,并可以控制绘画位置

- Spaces集成

- “不要再提示我”

- 针对不同窗口和程序的Dock图标,包括徽章和数字

- 准确追踪鼠标

- 更多文本格式

- 布局管理器增强

- Safari 3风格的搜索结果

- 自动链接、引用和内建的图片编辑

- 拼写检查

- 去掉按钮中不需要的图片

- 免费图片和图标

- 通过平铺小图片画复杂图形

- 凹进形式的方框

- 内建提供的色彩渐变支持

- 增强的TableViews 和 OutlineViews

- 源头列表

- iTunes 歌曲商店形式的路径显示

- 内建的图片编辑

- 内建的PDF查看和浏览

- 卸载程序包

- 获取内存和处理器信息

- 更简单的优先级序列

- 显示日期

- 字符串编码

- Core Data更有效的表达式

- 脚本支持

- 和iCal以及其他数据协同工作

- RSS 支持

- Interface Builder

作者:Matt Gemmell

正文:

做为Cocoa的开发者,每一个新版本的Mac OSX的发布,都需要我们花费时间熟悉它们所提供的新的API和机制。在这个熟悉过程中,一个主要的目标是了解操作系统提供的新的控件和功能。这些功能我们在之前的版本中只能自己用代码去实现,而现在系统自身就提供了相应的调用接口。

在过去的几个月里,我一直在使用Leopard。我认为我应该列举出一些新的API,Cocoa应用程序开发人员们会对它们感兴趣。我会分门别类地介绍它们,并会附带一些截图。您可以在留言中加入您所发现的新功能。我会按照AppKit和Fundation发布说明中的顺序去介绍他们,而如果您真的期望关注Leopard的新功能,建议您也去查看这些这些发布说明。

自然,这些新的API对于之前版本的支持方面的确有些问题,但是这并不会影响这些新的功能的实用价值。

Core Animation 核心动画

这是需要介绍下的东西。如果你花一些时间阅读文档,特别注意一下“带层的视图”和“动画代理”这些概念,你可以仅仅通过在Interface Builder中进行一些简单的设置,就做出一些意想不到的事情。另外,你在写代码的过程中,将从前发送消息到yourView(可以是任意view)改成发送消息到[yourView animator],就可以直接做出一些动画特效来。

看一下 NSAnimatablePropertyContainer,你也可以在view中添加自己的动画属性。

视图描绘

当一个视图被隐藏、显示和即将进行描绘的时候,会自动通知你。这些通知你都可以通过创建子类的方式,建立接收方法。这会帮助你在描绘视图的时候做更有效的预先计算和缓存。而且你可以同时直接操作一个视图的所有子视图。

和快速查看协同工作

你可以自己编写快速查看功能的插件,这样快速查看可以直接预览你创建的自定义文档的内容。这和10.4版中允许你创建Spotlight插件进行索引文档一样。

你还可以直接通过调用在QuickLook框架中提供的 QLThumbnailImageCreate()函数,请求快速查看生成的文档预览内容。你可以指定预览数据的大小、类型,甚至可以直接画成一个图标(可以增加阴影、文档翻页等效果)。

管理多视图(针对自定义的分页控件等)

现在有一个新的 NSViewController类,使用这个类你可以管理多个视图并支持视图绑定。这个类可以帮你省去一大堆在用户请求时切换视图的代码。

图片或者视图以iPhoto形式的动画表格进行呈现

用 IKImageBrowserView直接进行调用。在Interface Builder中设置一个,直接开始模拟,你就能看到效果。下面的例子没有使用一行代码(而且是控件默认的属性设置),仅仅是一个nib文件。这个例子可以显示出你桌面的图片,支持多重选择,自动排列,动画效果的拖拽重新排列。

注意, IKImageBrowserView是一个制作好了的控件,使用了新的 NSCollectionView类。之前这个类被称作 NSGridView,现在叫做 NSCollectionView。同时,有一个叫做 PubSub的例子使用了IKImageBrowserView,你可以在 /Developer/Examples/PubSub/NewMusic/ 这个目录里找到这个例子。

设置你自己的智能组、播放列表、目录

你可以使用NSRuleEditor 和 NSPredicateEditor 这两个类,开发我们所熟知的规则编辑界面。

在菜单里加入自定义视图

NSMenuItem现在提供了一个-setView (和-view) 方法供调用。无需使用Carbon直接可以在菜单里增加自定义控件。通过定时器产生的动画效果也可以工作,但是需要注意你使用的循环。(必须是事件跟踪循环模式,因为是在菜单内)

菜单增强

当一个菜单项被打开、关闭、选中以及取消选中时,你将会以通过托管的方式得到通知。

你可以在不同的菜单上设置不同的快捷键,只要他们执行的动作一样。如果快捷键应当触发一个被禁用了的选项,你的应用程序也可以对其进行响应。这项改进可能会帮你省掉一些定制的代码。

打印界面

打印界面有了很大的增强,尤其是对于附属视图的支持上,你的程序现在可以真正地定制需要打印的部分。如果打印支持是你程序里很重要的一部分,那么你需要重新好好看一下NSPrintPanel和NSPageLayout,这两个类增加了非常多的新资料和新的功能。

全局类型标志Uniform Type Identifiers

Leopard现在大大地通过文档结构支持了UTI,包括NSDocument,打开、保存工具窗口、程序信息、NSWorkspace等等。同样支持了拖拽类型、剪贴板数据、服务定制、图片类型和其他类型的支持。如果你准备简化并全局化程序的数据类型,而不想使用很多重复的常量定义,你应该看看这部分说明。

像邮件程序一样使用分栏视图

NSSplitView现在被明显地增强了。仔细阅读API文档,你会发现程序化地折叠、修改分栏厚度和激活区域,甚至指定一个用于拖拽的区域都变得非常简单。而且还修改了一些错误。

将文档图标显示在标题条内

要实现这个功能,你无需通过使用NSDocument体系,现在系统提供了一个新的方法去控制图标显示的形式、是否需要弹出菜单等功能。

类似iPhoto工具条形式的HUD窗口

现在系统支持一种HUD窗口形式,包含在NSPanel当中。这种窗口可以设置为无边框形式,同时显示为半透明黑色背景。直接使用这种窗口,你可以节省很多定制这种类型窗口的代码。

控制窗口的材质、金属形式,并可以控制绘画位置

现在系统提供了检测窗口材质边框厚度的方法。比如,你可以定义窗口最底部的100点应当有材质。这些方法可以帮你简化自定窗口的子类,或者仅仅为了画一个特定背景的窗口而写的额外的视图。

Spaces集成

当你的窗口显示在特定Space虚拟桌面中,或者用户切换了Space时,你可以选择不同的显示方式。基本来说,你可以指定自己的窗口是否需要使用默认的行为(显示在一个虚拟桌面中,保持在这个桌面直到指定其移动),或者一直显示在当前屏幕上,或者在所有的桌面中都一直显示。请参阅 NSWindowCollectionBehaviour以了解更多信息。

“不要再提示我”

在过去,如果你需要将对话框显示成这种样子(通常在对话框底部显示一个单选框,选中后这个提示就不再出现),你需要写不少代码去实现。在Leopard中,NSAlert直接支持这种形式的对话框了。你可以节省很多代码以及制作这类窗口所花费的精力。请参阅 NSAlert中 setShowsSuppressionButton: 和 -setAccessoryView: 方法。

针对不同窗口和程序的Dock图标,包括徽章和数字

系统提供了一个叫做NSDockTile的新类,允许你控制dock上最小化了的窗口和你自己的程序图标。这个类支持添加、取消图标印章,同时可以定制印章上的文字。比如你想在图标中显示进度条或者其他状态,都可以通过这个类进行操作。这样你就节省了大量定制代码,也无需自己在图标上画了。

准确追踪鼠标

和从前提到过的一样,Leopard现在有了一个更好的跟踪鼠标位置的选择:NSTrackingArea 。你可以用它来获得精确的鼠标位置(鼠标进入、退出或者移动),甚至你的程序不在激活状态也可以追踪。

更多文本格式

现在文字系统支持OASIS开放文档格式和ECMA Office开放XML格式,同时支持新版word格式,这样你可以直接在程序中添加导入导出选项,无需撰写其他代码。

布局管理器增强

如果你一直用NSLayoutManager对布局进行管理,你应该了解,现在它支持非连续布局。如果你想花点时间学学如何实现的话,它对你的程序有了很大的性能改善。还包括了一些改善,诸如获取特定字体的基础偏移位置以及显示不可见项目。

Safari 3风格的搜索结果

Safari 3 提供了一个很漂亮的搜索结果视觉效果,在正文中将搜索结果高亮显示为小黄色方框。你也可以提供这种风格的支持,在 NSTextView 中使用 showFindIndicatorForRange:方法,就可以直接拿来用了。拿这个好功能做点好事,可别做坏事:)

自动链接、引用和内建的图片编辑

NSTextView 现在支持这几个功能,还包括链接的鼠标提示。你甚至可以通过检查 NSAttributedString,去获取它是否在指定位置发现一个URL。又帮你省掉很多定制代码。

拼写检查

你也许注意到了Cocoa文字系统中提供的新的语法检查器(绿色下划虚线),你可以直接调用他们。

去掉按钮中不需要的图片

如果你的程序里有自定义的按钮,你大概为这些按钮的不同状态画了很多图片,普通状态、按下状态等等,你还得写很多代码把这些图片捏在一起。Leopard可以帮你省下这些图片,通过 NSImage的 -isTemplate和 NSCell的 -backgroundStyle。请参阅文档,不过基本上:

你可以指定一个图片,告诉Cocoa,这是一个“遮罩”,Cocoa就会帮你将它在不同情况下高亮(有点类似iCal中左下方那些按钮的状态)

你可以告诉NSCell如何显示文本,显示在什么背景:暗色、亮色、凸出的还是凹进的。你可以只画一个图片就能实现Safari里添加书签那种按钮的效果(高亮、非高亮、雕刻、凸出)

这个功能可以明显减少你的程序尺寸和内存占用,还能减少美工预算。请参阅文档,另外注意NSStatusItem也支持这种功能。

免费图片和图标

长久以来我们一直在盗用苹果的图标,现在你可以随便用了。NSImage中的-imageNamed:方法里提供了大量的新标准图片供你使用,这些图片包括Safari书签图标、所有的箭头、齿轮图标、电脑图标、蓝牙和Bonjour Logo、用户图标、信息图标还有很多很多。你程序的尺寸和图标设计预算可以大幅减少了。(别担心,NSButtonCell支持imageScaling参数,这样这些图标可以随意缩放)

如果你想看看这些图标,在Interface Builder中拽进一个NSImageView,用下拉框查看这些图标,都在里面。

通过平铺小图片画复杂图形

Leopard现在提供了两个函数,分别叫做NSDrawThreePartImage() 和 NSDrawNinePartImage()。这两个函数可以让你使用小图片填充进大的图形。这些函数都是分辨率无关的,可以帮你省下二十行以上的自定代码。

凹进形式的方框

NSBox现在支持自定义背景和边框颜色,你还可以自己选择边框宽度和圆角。你又可以扔掉一个自定义的子类控件了。

内建提供的色彩渐变支持

Cocoa开发中所有人都在使用 CTGradient,它很棒。Leopard中,苹果终于提供了NSGradient类。仔细看看这个类提供的方法,可以很好地帮你制作色彩渐变的用户界面。

增强的TableViews 和 OutlineViews

我一直自己建立NSTableView的子类,这样可以让我编辑表格中的内容(比如复选框等),编辑的同时不会选择整行。Leopard提供了这个支持,可以让你选择是否要追踪一个表格的编辑状态。现在系统提供了继承的方法,让我们支持选择控件内容,并且支持拖拽、关联菜单和直接编辑。

如果你需要iTunes或者Finder侧栏效果,你也可以做出来了。现在系统提供了定宽表格列,你可以直接实现这个效果。

源头列表

我们讨论这个问题好几年了,Leopard终于可以让你在 NSTableView 和 NSOutlineView 中制作高亮效果。不用写定制代码,就可以作出i什么什么的软件效果了。

iTunes 歌曲商店形式的路径显示

新提供的NSPathControl (和其中的Cell 与 ComponentCell或者类似的东西)让你可以显示为这种形式,就像iTunes歌曲商店的那种路径。可以显示为弹出菜单,或者类似路径条的样子。你可以在Interface Builder中做做看。

内建的图片编辑

IKImageView (Interface Builder直接提供) 提供给你图片视图,并且自动支持图片编辑功能、预览的切割、选择、移动、脚注和其他功能,完全不用自己编写代码。现在你在处理图片的时候,没理由不提供一个简单的图片编辑功能了。

内建的PDF查看和浏览

PDFView 提供给你PDF文件预览形式的浏览、选择、缩放等支持。新增加的 PDFThumbnailView甚至可以让你列出PDF中的页码。无需编写代码,内建支持。

卸载程序包

NSBundle现在支持卸载,你可以节省下一些内存。

获取内存和处理器信息

NSProcessInfo现在可以通过调用-physicalMemory 告诉你内存容量,无需使用Carbon,你还可以使用-processorCount获取CPU数目,用-activeProcessorCount获取激活的CPU数目。

更简单的优先级序列

看一下 NSOperation 和 NSOperationQueue,这是系统提供的比较简单的多线程支持,应该比你自己写的好。

显示日期

NSDateFormatter 支持更多日期形式。 NSCalendar可以帮你计算时间差,以类似“几周之前”、“几个月前”这种形式显示。

字符串编码

NSString支持了更多的编码,你可以看看Leopard是否帮你节省了自己做编码的时间。

Core Data更有效的表达式

NSExpression现在支持子查询、聚集查询、联合查询、交叉查询和减量查询。你可以节省下不少内存和代码,无需自己编写程序实现了。如果你想写出更快、可定制性更强而且更少代码的程序,那你一定要看看文档里关于Core Data中SQL存储的部分。

脚本支持

Leopard中提供了太多增强的脚本处理功能,无法一一列举。如果你要在程序中使用脚本支持,请阅读Fundation发布说明(从头读到尾)。你可以少写很多代码,而且程序运行更稳定,错误更少。

和iCal以及其他数据协同工作

日历存储框架允许你存取、编辑、更新iCal数据,这些数据包括诸如日历、任务、时间等,而且很容易使用。同时支持对这些数据的过滤和搜索。

RSS 支持

如果你希望处理简单地处理RSS,看一下PubSub框架。这个例子是系统本身提供的。

Interface Builder

看看Interface Builder中提供的很多新对象吧,你会发现很多有趣的东西。包括了自动化相关视图、AppleScript编辑器、可视化创建工具条、视频截取和很多Quartz Composer相关的东西。系统甚至提供了支持捆绑兼容的 NSDictionaryController,让你编辑 NSTableView中 NSDictionary的内容。

系统还提供了API,你可以自己编写IB对象或者工具条,如果你希望为其他开发者做些事情,你可以看一下这部分。你还可以通过编写这些让自己的开发变得更简单。

结语

现在到了该拿这些东西做点事情的时候了,我想你会希望自己试试看的。花点时间看看Xcode和Interface Builder,这些最新提供的东西会帮助你未来的开发节省很多时间。原文地址:http://mattgemmell.com/2007/10/28/get-rid-of-your-code-with-leopard

时间: 2024-10-12 04:40:07

Mac 开发快速查阅目录的相关文章

Mac开发快速入门

初次接触mac开发,发现国内相关资料少得可怜,于是写下这篇文章,作为学习记录.Mac应用开发也是使用Objective-C进行开发的,所以从iOS转Mac并不困难,很多东西都一样. 本文以一个登录界面作为练习 好了,少废话,接招~ 一.新建项目 然后选择项目保存路径,点击create. 然后我们可以看到这样一个界面 二.使用控件 单击文本框,按住Ctrl键拖到@interface和@end中间,弹出绑定属性框,输入属性名,点击Connect. 对于按钮,Connection的类型应选择Actio

Mac下快速对H5鱼虾蟹棋牌搭建PHP开发环境

Mac下快速对H5鱼虾蟹棋牌搭建PHP开发环境论坛:aqiulian.com,更多PHP搭建MVC开发环境咨询Q:212303635. 最近做了一个后端的项目,是用PHP+MySQL+Nginx做的,所以把搭建环境的方法简单总结一下. 备注: 物料:Apache/Nginx+PHP+MySQL+MAMP Mac OS 10.12.1 自带Apache,Nginx和PHP 1.运行Apache 查看Apache版本,在终端根目录输入如下命令: sudo apachectl -v 终端会输出Apac

Mac开发利器之程序员编辑器MacVim学习总结

Emacs和Vim都是程序员专用编辑器,Emacs被称为神的编辑器,Vim则是编辑器之神.至于两者到底哪个更好用,网络上两大派系至今还争论不休.不过,相比之下,Emacs更加复杂,已经不能算是一个编辑器了,有人这么说:Emacs是伪装成编辑器的操作系统.与之相反,Vim的定位很明确,就是要做一个强大的编辑器.由于笔者精力有限,决定还是选择自己认为相对简单点的Vim来学习.因此,笔者将会在本文跟大家介绍Mac下Vim的安装以及简单使用.          首先,Mac系统默认已经安装了Vim.打开

《Spring 3.x 企业应用开发实战》目录

图书信息:陈雄华 林开雄 编著 ISBN 978-7-121-15213-9 概述: 第1章:对Spring框架进行宏观性的概述,力图使读者建立起对Spring整体性的认识. 第2章:通过一个简单的例子展现开发Spring Web应用的整体过程,通过这个实例,读者可以快速跨入Spring Web应用的世界. 第3章:讲解Spring IoC容器的知识,通过具体的实例详细地讲解IoC概念.同时,对Spring框架的三个最重要的框架级接口进行了剖析,并对Bean的生命周期进行讲解. 第4章:讲解如何

【快速查阅】Linux下启动和关闭Weblogic(管理服务器+被管服务器)

Weblogic的管理服务器和被管服务器的启动.关闭,偶尔会用到,却又不常用,导致需用时却忘记了,而又重新查阅HELP. 故,以此记录,方便查阅.执行. 首先,weblogic的启动脚本和关闭脚本都在域目录的bin文件夹下,所以,先cd到该目录 cd $WEBLOGIC_HOME/user_projects/domains/$DOMAIN_NAME/bin 然后按需要执行以下脚本: 管理服务器的启动 ./startWebLogic.sh即可 但离开命令行模式随即关闭,所以需用nohup模式 亦可

Apple Watch开发快速入门教程

Apple Watch开发快速入门教程 试读下载地址:http://pan.baidu.com/s/1eQ8JdR0 介绍:苹果为Watch提供全新的开发框架WatchKit.本教程是国内第一本Apple Watch开发教程,全面讲解WatchKit的各个方面,帮助读者更为快速的掌握Watch开发方式和流程. 目录 第1章  开发环境--Xcode 1 1.1  苹果账号 1 1.1.1  苹果账号的成员分类 1 1.1.2  注册免费的苹果账号 1 1.1.3  注册收费的苹果账号 4 1.2

边学边做之php+mysql+smarty+apache搭建个人博客(3):开发环境及目录创建

hello ladies and 姑娘们!大家下午好,昨天好基友来北京了,晚上去网吧打dota打到一点多.五局三胜,我表示已经很满意了.趁着基友去看漫展(据说今天有苍老师!!!)的时间,我给大家来介绍我们边学边做的第三期,开发环境及目录创建. 这里的开发环境是我个人的开发环境,小伙伴们可以根据自己的实际情况搭建自己的环境,有啥不懂的可以给我留言,我尽量帮大家(已经在windows,Mac和linux下搭建成功). 我的操作系统是 Mac os X(机器是macbook pro最低配,买不起高配的

使用WebStorm 2019 for mac配置快速列表的方法

WebStorm 2019 for mac是JetBrAIns公司旗下一款很好用的JavaScript开发工具.被广大中国JS开发者誉为“Web前端开发神器”.“最强大的HTML5编辑器”.“最智能的JavaScript IDE”等. 在本文中,我们介绍的是使用WebStorm 2019 for mac配置快速列表的方法. 使用WebStorm 2019 for mac如何配置快速列表 一个 快速列表 是包含自定义设置WebStorm的命令,并用键盘或鼠标快捷键相关的弹出窗口.您可以根据需要创建

OS/mac开发的一些知名个人博客

OS/mac开发的一些知名个人博客 王巍的博客:王巍目前在日本横滨任职于LINE.工作内容主要进行Unity3D开发,8小时之外经常进行iOS/Mac开发.他的陈列柜中已有多款应用,其中番茄工作法工具非常棒.http://onevcat.com池 建强的博客: 池建强,70后程序员,Blogger.98年毕业,先后就职于洪恩软件.RocketSofeware和用友软件工程公司(后更名为瑞友 科技),现任瑞友科技IT应用研究院副院长.该博客最初每天发送一条Mac技巧,不过目前已经形成了一种技术和人