Three20
Three20 是一个包含 iPhone UI 类(如相册查看器)和通用工具(如 HTTP 磁盘缓存)的集合。Three20 由 Facebook iPhone 应用 演化而来,该应用曾是最受欢迎的 iPhone 应用之一。
社区
如果您想就 Three20 提出任何问题,请查看以下任何内容:
文档
您可以通过以下几种方式访问 Three20 API 文档:
- 在线:[http://facebook.github.com/three20/api](http://facebook.github.com/three20/api)
- 在 Xcode 中
- 打开您的 Xcode 首选项(⌘,)并切换到文档选项卡。
- 单击加号按钮
- 添加 Three20 文档集订阅源:
feed://facebook.github.com/three20/api/com.facebook.Three20.atom
- 使用
src/scripts/docs.py
脚本从项目仓库生成文档
将 Three20 添加到您的项目中
Three20 作为静态库编译。它使用 Xcode 的“依赖项目”功能。有两种方法将 Three20 添加到您的项目中。
第一种是使用 TTModule Python 脚本。
第二种选项是手动将其添加到项目中。下面是如何操作:
预计时间:5 分钟。
-
克隆 three20 git 仓库:
git clone git://github.com/facebook/three20.git
。请确保将仓库存储在一个永久位置,因为 Xcode 在每次编译项目时都需要引用这些文件。 -
在 "
three20/src/Three20/
" 下找到 "Three20.xcodeproj" 文件。将 Three20.xcodeproj 拖动到 Xcode 项目“组和文件”侧边栏的根目录。将出现一个对话框 - 确保在单击“添加”之前取消选择“复制项”并且“引用类型”为“项目相对”。 -
打开您刚添加到应用程序中的 Three20 Xcode 项目,展开“依赖”组。选择列表中的所有项目,并将它们拖动到您的应用程序中。现在您应该在应用程序中添加以下列表的 Three20 项目
- Three20Core
- Three20Network
- Three20Style
- Three20UICommon
- Three20UINavigator
- Three20UI
- Three20
-
现在您需要将 Three20 静态库链接到您的项目中。选择刚才添加到侧边栏的所有项目项。在“详细信息”表中,您会看到许多项目,例如 libThree20.a 和 libThree20Core.a。为每个
lib
文件(非单元测试)勾选最右侧的复选框。这将将 Three20 框架的每个部分链接到您的应用程序。 -
现在您需要将 Three20 添加为项目的依赖项,这样 Xcode 就能在您编译项目时进行编译。展开侧边栏中的“目标”部分,双击您应用程序的目标。在“常规”选项卡下,您将看到“直接依赖项”部分。单击加号按钮,选择“Three20”和每个其他库,然后单击“添加目标”。您不需要为每个库添加
UnitTests
目标。 -
现在您需要将图像和字符串的包添加到您的应用程序中。在 "three20/src" 下找到 "Three20.bundle",并将其拖动到您的项目中。将出现一个对话框 - 在单击“添加”之前,确保已选中“创建文件夹引用”,“不复制项”和“引用类型”为“项目相对”。
-
现在您需要将 Core Animation 框架添加到您的项目中。在项目(或等效)中的“框架”组上右键单击,然后选择“添加”>“现有框架”。然后定位到 QuartzCore.framework 并将其添加到项目中。
-
最后,我们需要告诉您的项目Three20头文件的存放位置。打开您的“项目设置”,然后进入“构建”标签。查找“头文件搜索路径”,双击该选项。添加从您的项目目录到“three20/Build/Products/three20”目录的相对路径。
-
当您在项目设置中时,前往“链接器”部分的“其他链接器标志”,并将“-ObjC”和“-all_load”添加到标志列表中。
-
您已准备好开始了。只需在任何您要在项目中使用Three20类的地方添加#import "Three20/Three20.h"即可。
Three20概述
图片查看器
TTPhotoViewController模拟了Apple的Photos应用,并具有所有滑动和捏合的享受功能。您可以为它们提供自己的“照片来源”,这与UITableView使用的数据源类似。与Apple的Photos应用不同,它不仅限于存储在本地的照片。您可以从网络加载照片,并且可以递增地加载长列表的照片。
消息编辑器
TTMessageController模拟了Apple的Mail应用的邮件编辑器。您可以根据需要对其进行自定义以发送任何种类的消息。包含您自己的消息字段集,或者使用标准的“收件人:”和“主题:”。收件人姓名可以从您提供的数据源自动完成。
网络图片视图
TTImageView使得显示图像的难度与HTML中的难度相当。只需提供图像的URL,TTImageView就会加载并高效显示该图像。TTImageView还可以与下文所述的HTTP缓存一起工作,以尽可能避免重复访问网络。
网络感知TableView控制器
TTTableViewController 和 TTTableViewDataSource 帮助您构建从互联网加载数据的表格。与默认情况下仅假设您已经所有数据就绪的UITableView不同,TTTableViewController 允许您在数据加载时进行通信,当出现错误或没有内容可显示时,也会通知您。它还帮助您添加一个“更多”按钮来加载下一页的数据,并可选择通过摇晃设备重新加载数据。
更优秀的文字字段
TTTextEditor 是一个可以自动随您输入增长高度的 UITextView。我使用它在Facebook Chat中输入消息,其行为类似于Apple短信应用中的编辑器。
TTPickerTextField 是一个自动完成 UITextField。您输入时它会搜索数据源,并在选择自动完成选项时,在人流的文本中添加气泡。我在 TTMessageController 中使用它来选择消息接收者的姓名。
HTTP磁盘缓存
TTURLRequest 是对 NSURLRequest 的替换,它支持磁盘缓存(NSURLRequest 只能在内存中缓存)。它还具有其他一些不错的功能。HTTP POST 与提供一个参数字典一样简单。TTURL 加载系统还可在任何时间挂起和恢复,这是一个性能的有效助手。网络线程经常与UI线程争斗,因此您可以在应用在图形密集的瞬间挂起网络。
基于URL的导航
TTNavigator 是为像我这样的资深旧网页开发者设计的,它可以通过访问 URL 来组织应用程序的“页面”。
您的视图控制器可以简单注册它们处理的 URL 模式,当访问这些 URL 时,控制器将被创建并显示。您还可以注册当访问 URL 时调用的通用操作。
TTNavigator 还可以持久化和恢复导航控制器和模态视图控制器的完整路径,因此您的用户可以退出应用程序并准确地回到他们离开的地方。
更多了解请访问 Three20.info