Three20Three20模组架构简介(下)

2020-06-09 阅读935 点赞176

延续上一篇文章的介绍,在这次的文章中我们将继续探索 Three20 的 UI 部份,这也是 Three20 中最令开发人员喜爱的部份。

整体架构图

在开始之前,我们先複习一下 Three20 的阶层架构,我们在先前的文章中介绍了 Three20Core、Three20UICommon 和 Three20Network 这三个底层 framework,而这一次我们将转到上面三个比较高阶、与 UI 相关的 framework,也是 Three20 让人感到最惊奇、最强大的部份。

------------------------------------------ |                    UI                  | ------------------------------------------ | UINavigator  |            |   Style    | |--------------|            |------------| |   UICommon   |            |  Network   | ------------------------------------------ |                   Core                 | ------------------------------------------ Three20UINavigator

在 Three20 中一个很重要的创新突破便是 URL-based navigation,透过这个机制我们可以将程式中原本切换画面的繁琐程式码,简化为开启 URL 的动作。 这个概念对 Web 开发者而言应该相当熟悉,诚如我们在 Three20 介绍文章中提到过,Three20 的诞生起源于 Facebook 的 iPhone 版应用程式,所以我们很容易在 Three20 这个 framework 中看到许多关于 Web framework 的概念。 在 Three20UINavigator 中我们可以看到以下类别:

除此之外,Three20UINavigator 也有提供一些取得 Frame、Bounds 以及状态列高度的方法,有兴趣的读者可以参考 TTGlobalNavigatorMetrics.h 这只档案中的内容。 URL-Based Navigation 的内容较多,笔者会在未来另外撰文解释、说明。

Three20Style

除了上述提到的 URL-based Navigation 外,Three20 也引入了一个在 Web 开发上相当常见的 Stylesheet 概念。一般而言,我们若是在 iPhone 上面设计使用者介面时,必须针对每一个 UI 元件手动设定样式,像是文字的字体、大小,或者是工具列的颜色等等。然而透过 TTStyle 和 TTStyleSheet 的设定,就可以免除我们每次重複设定 UI 元件样式的麻烦。 此外,也有 TTStyleLayout、TTStyleText 等相关的类别,和一些 UIKit 的新增方法,像是:

  • UIColor
  • 关于 Style 的部份的内容笔者也同样会另外撰文介绍,敬请期待。

    Three20UI

    在先前 framework 的层层堆叠后,总算是到了最上层、也是最重要的 Three20UI 了。Three20UI 这个 framework 中包含了相当多的类别,大概可以分成三类:

    以 UIKit 的新方法而言, 以下几个是比较有趣、值得注意的:

  • UITabBarController
  • UITableView
  • UIView
  • UIWebView
  • 而 Three20UI 中所提供的额外 View Controllers 也是相当的丰富,像是:

    另外还有许多 View Controller,有兴趣的读者可以参考先前介绍文章中的萤幕截图、还有 TTCatlog 这个範例程式。

    结论

    在这两篇文章中我们针对了 Three20 的各个模组做了一个概要性的简介,在下一篇文章中我们将谈谈 Three20 中的额外扩充 framework,也就是 JSON/XML framework,还请各位读者多多指教。