DeltaCalculator 1.0.4

DeltaCalculator 1.0.4

测试已测试
Lang语言 SwiftSwift
许可 MIT
发布最新发布2016年3月
SPM支持SPM

Ivan Bruel 维护。



DeltaCalculator

DeltaCalculator

DeltaCalculator 是一个 Swift 库,专注于用动画插入、删除和移动操作来替换 reloadData() 调用。

DeltaCalculator 尝试优化计算所有更改所需的迭代次数,确保 UI 线程不会阻塞。

此框架基于 BKDeltaCalculator Objective-C 库。

安装

DeltaCalculator 通过 CocoaPods 提供。要安装它,只需将以下行添加到 Podfile 中。

pod 'DeltaCalculator'

使用

DeltaCalculator 比较两个数组并计算它们之间的差异,表示为 Delta 对象。DeltaCalculator 使用泛型,因此您需要在使用初始化器时提供类。

如果你的泛型类是 Equatable,你可以不提供 equalityTest 就初始化计算器。

let deltaCalculator = DeltaCalculator<String>()
let delta = deltaCalculator.deltaFromOldArray(dataModel, toNewArray: newDataModel)

否则,您需要在初始化器中提供 equalityTest

let deltaCalculator = DeltaCalculator<NSDate>() { (lhs, rhs) -> Bool in
  return lhs.compare(rhs) == .OrderedSame
}
let delta = deltaCalculator.deltaFromOldArray(dataModel, toNewArray: newDataModel)

UITableViews

要将 Delta 应用到 UITableView 上,您需要使用批更新,如下所示:

let delta = deltaCalculator.deltaFromOldArray(dataModel, toNewArray: newDataModel)
tableView.beginUpdates()
dataModel = newDataModel
delta.applyUpdatesToTableView(tableView, inSection: 0, withRowAnimation: UITableViewRowAnimation.Right)
tableView.endUpdates()

UICollectionViews

要将 Delta 应用到 UICollectionView 上,您也需要执行批更新。

let delta = deltaCalculator.deltaFromOldArray(dataModel, toNewArray: newDataModel)
collectionView.performBatchUpdates({
  self.dataModel = newDataModel
  delta.applyUpdatesToCollectionView(collectionView, inSection: 0)
}, completion: nil)

示例

Example 目录中有一个示例项目。

作者

Ivan Bruel,@ivanbruel

许可

Delta 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。