Container Collection框架
Container Collection是一个Swift库,它可以使移动应用程序中数据驱动的本地组件渲染成为可能。
Container Collection强调从不可变模型到描述视图应如何配置的不可变组件的单向数据流。它从这种描述中构建视图层次结构的重劳部分。
它适用于iOS和tvOS,并且可以使用CocoaPods、Carthage或手动安装来安装。
Container Collection视图
Container Collection通过使用本地UICollectionView
和UITableView
的单元格作为构建块(即“组件”)的容器,给出了构建布局的很大的灵活性。组件是你希望在屏幕上呈现的最小数据单位。例如,在一个照片应用程序中,组件可能是一张单独的图片、包含标题的图片,甚至是一个完整的画廊。
Container collection使用ContainerView
在屏幕上展示组件,这是UIView
的一个子类,被添加为一个单元格的子视图。这个ContainerView
是组件的宿主视图,这些组件是作为父视图控制器的子视图控制器添加的UIViewController
实例。
容器集合动态地堆叠项目(即组件)并构建屏幕的内容,每个组件都必须定义其大小且不能是无限的。
组件
用于渲染屏幕的基础模块称为 组件。组件可以被重复使用和重新排列,并可以渲染任何模型。它们定义了屏幕上的一个矩形区域,其中可以渲染任何内容,这使得快速迭代UI变得容易,并创建了模块化构建块,从而减少了代码重复的需要。
要了解更多关于组件的信息,请查看 组件编程指南。
要求
版本 | 需求 |
---|---|
1.0 | Xcode 10.0+ Swift 4.2+ iOS 10.0+ / tvOS 10.0+ |
该框架使用 Swift 5.0 编写,但实际上没有针对该Swift版本的特定代码。因此,它应该适用于使用Swift 4.2的项目。
安装
您可以选择手动安装 Container Collection 框架,或者通过依赖管理器安装。
手动
克隆此仓库(例如,将其添加为子模块)。将项目 ContainerCollection.xcproj 拖到 Xcode 中,作为你的应用程序项目的子项目。在应用程序项目的“通用”选项卡下的“链接框架和库”中添加 ContainerCollection 进行链接。
使用 CocoaPods
要使用 CocoaPods,请首先确保您已安装它并按其说明更新到最新版本。
将 ContainerCollection 添加到您的 Podfile
pod 'ContainerCollection'
更新您的 pods
$ pod update
使用 Carthage
要使用 Carthage,首先确保您已安装并按其官方仓库中的说明更新到最新版本。
首先,将 ContainerCollection
添加到您的 Cartfile
中。
github "WAMF/ContainerCollection" ~> 1.0
然后,运行 Carthage。
$ carthage update
代码风格指南
我们遵循Ray Wenderlich Swift 风格指南,只是在函数声明部分做了一点小的修改。对于多参数函数,我们接受 Ray Wenderlich 风格指南中的形式和以下形式。
func reticulateSplines(spline: [Double],
adjustmentFactor: Double,
translateConstant: Int, comment: String) -> Bool {
// reticulate code goes here
}
此修改也适用于 函数调用 部分。
此外,如果函数声明(或函数调用)的长度小于 120 个字符,则无需将其拆分。
入门指南
为了让您快速开始使用 Container Collection,我们编写了一份入门指南,它将提供一份逐步教程,帮助您搭建并运行首次视图。
示例应用
我们在本仓库中提供了一个 iOS 示例应用。这个示例应用实现了一些视图控制器,可以使用 ContainerCollection 单独使用或堆叠使用。为视图控制器填充数据是从应用捆绑包中包括的给定(小型)数据集随机生成的。示例应用中包含的视图控制器有:
- 一个包含
UICollectionView
(水平和垂直流)的视图控制器。 - 一个包含独立
UIImageView
、标题和副标题的视图控制器,布局有两种不同形式。 - 一个包含
MKMapView
(来自 MapKit)的视图控制器。 - 一个包含
SCNView
(来自 SceneKit)的视图控制器(默认情况下在堆叠中禁用,您可以通过在MainMenuViewController
类中调用ResourcesManager
初始化器来启用它)。 - 一个包含嵌入式
AVPlayerViewController
(来自 AVKit)的视图控制器。
在选择视图控制器栈时,系统将提示您输入希望堆叠的视图控制器数量。默认为20,但允许在1到10000之间的任何数字。请注意,数据集是有限的。此外,对于大量数据,系统将向应用程序触发“内存警告”,应用程序随后将释放栈中不必要的资源(这将在该点引起短暂的延迟)。在以下设备上测试了具有10000个元素的性能:
- iPod Touch
- iPhone 6,6s,X和Xs
已知问题和兼容性问题
该框架与iOS/tvOS 10或更高版本兼容,但强烈推荐在iOS/tvOS 11或更高版本中使用它以获得更好的性能。