ItemsDataSource 0.2.0

ItemsDataSource 0.2.0

Sasha Prokhorenko 维护。



ItemsDataSource

Build Status CocoaPods Platform

ItemsDataSource 是 UICollectionView 的通用数据源。

功能

  • 能够创建任何数据类型的集合
  • 可重用的 UICollectionViewCell 和 UICollectionReusableView
  • 核心是 UICollectionView
  • 易于扩展

要求

  • iOS 10.0+
  • Xcode 9.0+
  • Swift 5.0+

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装:

$ gem install cocoapods

CocoaPods 1.1+ 是构建 ItemsDataSource 所必需的。

要使用 CocoaPods 将 ItemsDataSource 整合到您的 Xcode 项目中,请在您的 Podfile 中指定它

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'ItemsDataSource'
end

如果您使用的是 CocoaPods 1.5.0+,则可以将 ItemsDataSource 作为静态库包括进来

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'

target '<Your Target Name>' do
    pod 'ItemsDataSource'
end

然后,执行以下命令

$ pod install

Carthage

Carthage 是一个去中心化的依赖项管理器,它会构建您的依赖项,并提供二进制框架。

您可以使用以下命令使用 Homebrew 来安装 Carthage

$ brew update
$ brew install carthage

要用 Carthage 将 ItemsDataSource 整合到您的 Xcode 项目中,请在您的 Cartfile 中指定它

github "ItemsDataSource"

执行 carthage update 命令来构建框架,并将生成的 ItemsDataSource.framework 拖拽到您的 Xcode 项目中。

Swift Package Manager

Swift Package Manager 是一个用于自动化 Swift 代码发布的工具,并集成到 swift 编译器中。它仍在早期开发阶段,但 ItemsDataSource 支持在支持平台上使用它。

一旦您设置了 Swift 包,只需将其添加到 Package.swift 中的 dependencies 值即可轻松将 ItemsDataSource 作为依赖项添加。

Swift 4

dependencies: [
    .package(url: "https://github.com/minikin/ItemsDataSource.git")
]

手动操作

如果您不希望使用上述任何依赖项管理器,您可以将 ItemsDataSource 手动集成到项目中。只需将 Sources 文件夹中的文件复制到您的项目中即可。

CellDescriptor.swift
Groupable.swift
Itemable.swift
ItemsDataSource.swift
SupplementaryDescriptor.swift

使用方法

按照常规方式定义您的模型

import UIKit
import ItemsDataSource

struct Vitamin {

  // MARK: - Instance Properties

  let name: String
  let amount: Double
}

让您的模型符合 Itemable

extension Vitamin: Itemable {
  var itemCellDescriptor: CellDescriptor {
    return CellDescriptor(reuseIdentifier: ReuseIdentifier.vitaminCell, configure: configureIngredientCell)
  }
}

在扩展中添加模型的 configure 方法

extension Vitamin {
  func configureIngredientCell(_ cell: ViataminCell) {
    cell.vitaminNameLabel.text = name
    cell.backgroundColor = UIColor.randomColor()
  }
}

在观音控制台中注入数据源

import ItemsDataSource
import UIKit

final class ExampleViewController: UIViewController {

  // MARK: - Injections

  public var vitaminsDataSourse = ItemsDataSource(items: [Vitamin](),
                                                  cellDescriptor: { $0.itemCellDescriptor })

  // MARK: - IBOutlets

  @IBOutlet var exampleCollectionView: UICollectionView! {
    didSet {
      setExampleCollectionViewDataSource()
      exampleCollectionView.delegate = self
      setExampleCollectionViewLayout()
      exampleCollectionView.reloadData()
    }
  }

  // MARK: - Instance Properties

  var vitamins = [Vitamin]()

  // MARK: - ViewController LifeCycle

  override func viewDidLoad() {
    super.viewDidLoad()
    print("vitamins", vitamins)
  }

  // MARK: - Helpers

  private func setExampleCollectionViewDataSource() {
    vitaminsDataSourse.items = vitamins
    exampleCollectionView.dataSource = vitaminsDataSourse
  }

  private func setExampleCollectionViewLayout() {
    let layout = CommonFlowLayout(columns: 2,
                                  itemHeight: 200,
                                  inset: 5,
                                  spacing: 0,
                                  lineSpacing: 5)
    exampleCollectionView.collectionViewLayout = layout
  }
}

// MARK: - UICollectionViewDelegate

extension ExampleViewController: UICollectionViewDelegate {}

有关更多详情,请查看iOS示例或在我的Twitter上向我提问:@minikin

许可证

ItemsDataSource遵循MIT许可证。有关详情,请参阅LICENSE