秘诀4-9构建自定义下滑式警告4.12秘诀:添加状态栏图像位于iPhone顶部的栏提供了丰富的状态信息。这些应用程序触发的状态符号位于时间显示的右侧。比较常用的图标包括暂停/播放指示器、电池使用等。UIApplication实例可以使用文档中未记录的方法向状态栏中添加现有图像,但是我无法让状态栏调用使用来自应用程序包自身的数据。所有状态栏图像都存储在SpringBoard.app中的/System/Library/CoreServices/SpringBoard.app下。因此不难发现,这非常符合AppStore协议的边界条件。此限制有两个意义深远的结果。首先,你能使用的图像非常有限(它们只是标准的PNG,使用透明度);其次,需要向用户的System文件夹中添加自定义图像,这会带来安全性问题并影响操作系统的整体性能。这种方式不好,而且不安全,并且开发人员和苹果公司之间签有协议和沙盒。秘诀4-10显示了如何加载和删除这些图像。若要设置图标,请调用addStatusBar-ImageNamed:,并传递一个参数(不带扩展的图标名)。作为一项规则,每个图像有两个版本,一个用于黑色的状态栏(每个名称都以FSO_开头),一个用于白色/灰色状态栏(名称以Default_开头)。所有更改在退出程序之后都会持续存在。这也表明你应该谨慎地使用状态栏更新。例如,在传递时,@\(飞机模式图标)、SpringBoard显示Default_Airplane.png(针对黑色状态栏)。你没有传递扩展名或前缀。使用removeStatusBarImageNamed:删除图标。图4-11显示了飞机图标,如图所示。在应用程序结束之后,状态栏图像会仍然存在。在状态栏中添加一个飞机,然后退出,飞机仍然存在。如果你决定使用状态栏图像,则考虑在挂起或终止程序之前清除状态栏。按照定义,这些图像的目的是指出超过任何应用程序会话范围的行为。由于苹果公司坚决要求“一次一个应用程序”,因此在该限制之内应尽量少用这种技术。秘诀4-10添加和删除状态栏图标4.13添加应用程序标记如果曾经使用过iPhone或iPodtouch,你可能在主屏幕的应用程序上面看到过红色的小标记(badge)。这可能表示自从用户上次打开电话或电子邮件以来累计的未接电话数量或未读的电子邮件数量。实际上,可采用3种方法来标记应用程序:一种是非常简单的UIApplication调用;另一种有点复杂,需要在UIKit中建立通道;最后一种是使用从Web服务器发布的SDKpush功能。若要在应用程序内部设置标记,则可以使用文档中未记录的setApplicationBadge:调用或设置正式的applicationIconBadgeNumber属性。将NSString作为常规标记参数传递给该调用,将字符串大小限制为4或5(最多)个字符,或将标记数量属性限制为NSInteger。例如,你可以用当前月份的3个字母缩写来标记应用程序,如代码清单4-2所示。说明若要隐藏标记,将applicationIconBadgeNumber设置为0(数字零),或将setAppli-cationBadge:设置为@\(空字符串)。代码清单4-2使用当前月份标记应用程序若要删除应用程序标记,请传递空字符串(如@\)。这将从图标中删除任何现有标志。如果想获得一个“空”标记,则传递一个空格字符串@\。UIApplication方法的问题在于,若要使用它,必须将你的请求直接放置在应用程序下,然后只能以数值表示。你可能希望标记图标来自应用程序外部。这是开发人员将希望了解的事情,尤其是你不打算通过应用程序存储分发某些应用程序时。代码清单4-3演示了如何使用公用UIKit框架的动态链接来标记应用程序。该代码不要求应用程序自身完成标记设置。而是调用SpringBoard来执行琐碎的工作。此函数依赖动态链接。对UIKit框架进行反向工程展示了UIApplication的setApplicationBadge的工作原理。它调用具有一个字符串和一个应用程序标识符的SBSetApplicationBadge。通常,在日常编程中,我不赞成使用动态链接方法。图4-12显示了使用该功能标记几个图标的结果。
好文档 - 专业文书写作范文服务资料分享网站