background image

iOS 开发常用的开源库和示例

    iPhone 图像通常存储在以下 4 个地方:

相册(

PhotoAlums):用户可以使用 UIImagePickerController 类提供的交互对话框

从该相册中获取图像。

应用程序包:将图像与可执行程序、

Info.plist 文件和其他资源一同存储,用户可以

通过本地文件路径由

imageNamed:方法来读取这些基于包的图像。

沙盒:借助沙盒,可以将文件存储到

Documents、Library 和 tmp 文件夹中。

因特网(

Internet):应用程序可通过 URL 资源从网上下载图像。

    图像文件的位置决定着读取该文件的具体方式。相册中的图片及其路径无法直接从应用程
序访问,只有终端用户能够浏览和选择图像,使所选图像对应用程序可用。图像也不能由
URL 直接初始化。图像源不同读取方式也不同:
    1. 从应用程序包加载图像
    UIImage 类提供了一种加载应用程序包中存储的任意图像的简单方法,即通过文件名及
其扩展名调用

imageNamed:方法.

1

myImage = [UIImage imageNamed:@"icon.png"];

2

为 避 免 本 地 图 像 缓 存 及 其 有 效 利 用 内 存 空 间 的 问 题 , 还 可 用

imageWithContentsOfFile:替换,这个方法会返回从某一具体路径中加载的图像,这个
路 径 需 以 参 数 形 式 提 供 。 当 然 , 若 要 从 应 用 程 序 包 中 获 取 图 像 路 径 , 可 以 查 询
NSBundle 类为给定资源查找路径。示例代码:NSString *path = [[NSBundle mainBundle] 
pathForResource:@"icon" ofType:@"png"];
3

myImage = [UIImage imageWithContentsOfFile:path];

    2. 从沙盒加载图像
    默认情况下,每个沙盒包含 3 个文件夹:Documents、Library 和 tmp。图像等由应用程序生
成的数据通常位于

Documents 文件夹内。在 iPhone 开发中可以通过调用实用工具主目录函

数可靠地定位顶级沙盒文件夹。通过

NSHomeDirectory()返回结果,我们可以向下导航一级

Documents 文件夹,完全可以保证正确的位置。示例代码:

4

NSString *documentsFolder()

5

{

6

     return [NSHomeDirectory()

7

             stringByAppendingPathComponent:@"Documents"];

8

}

9

// 加载图像

10 path = [documentsFolder() stringByAppendingPathComponent:@"image.png"];
11 return [UIImage imageWithContentsOfFile:path];

    3. 从 URL 资源加载图像
    UIImage 类可以从 NSData 实例加载图像,但它不能直接从 URL 字符串或 NSURL 对象加
载图像。因此,只能为

UIImage 提供已经从 URL 下载的数据(即要创建由 URL 内容初始化

NSData 实例)。

12 NSURL 

 *url 

[NSURL