状态集合 1.0.2

状态集合 1.0.2

Guillem Espejo 维护。



  • 作者:
  • Guillem Espejo

状态集合

用于iOS的简单状态集合视图。

Swift Version Build Status License Cocoapods Compatible Platform PRs Welcome

状态集合是一个小型且轻量级的Swift框架,允许轻松创建支持空、加载和错误状态的UITableView和UICollectionView。

可以部分定制以提供更大的灵活性,同时保持简单。它在视图自定义和易用性之间取得了良好的平衡。

功能

  • 易于使用
  • 可定制
  • 支持空、加载和错误状态

要求

  • iOS 13.0+
  • Xcode 11.3

安装

CocoaPods

CocoaPods 是 Cocoa 项目的依赖管理器。有关使用和安装说明,请访问他们的网站。要使用 CocoaPods 将 StatefulCollections 集成到您的 Xcode 项目中,请在您的 Podfile 中指定它。

pod 'StatefulCollections'

基本用法

在需要使用状态化表格视图或集合视图的任何地方导入 StatefulCollections 模块。将您的集合风格视图类设置为相应的子类,StatefulTableView 或 StatefulCollectionView。

import StatefulCollections
// Other imports ...

class ViewController: UIViewController {

    @IBOutlet weak var tableview: StatefulTableView!
    @IBOutlet weak var collectionview: StatefulCollectionView!

// ...

}

如果您需要,可以在 story board 中设置类和导入模块。

要设置视图的状态,请使用 setStateTo 方法。

tableview.setState(to: .loading)
collectionview.setState(to: .empty)

这两种视图都支持四种不同的状态

状态 视图 图片 文本 使用
.normal 标准视图外观。 N/A N/A 用作默认状态,当需要显示内容时使用。
.loading 移除单元格分隔线,显示活动指示器并显示默认文本。 N/A 'Loading...' 在加载数据或处理数据(Core Data、网络、文件解析等)时使用。
.empty 移除单元格分隔线,显示 SF Image 和默认文本。 'text.badge.xmark' 'No results' 当没有结果显示时使用。
.error 移除单元格分隔线,显示 SF Image 和默认文本。 'xmark.octagon' 'There was an unknown error' 在获取集合数据的过程中失败时使用(I/O 错误、网络等)。

定制

StatefulCollections 允许一定程度上的定制,但尽可能保持简单。

虽然您无法添加或删除每个状态的基本视图组件,但可以自定义显示的组件。可以自由修改图像、标签和分隔线样式。

例如

tableview.setState(to: .error)

将给您的表视图以下外观

但是,您可以设置图像和文本为其他值

let errorImage = UIImage(systemName: "clear")
tableview.setImage(to: errorImage, forState: .error)
tableview.setText(to: "Network error", forState: .error)

// ...

tableview.setState(to: .error)

除了设置自定义图像和文本外,还可以设置自定义色调和颜色。颜色应用于视图本身,且与状态无关。

tableview.setImageTint(to: .red)
tableview.setTextColor(to: .blue)

重置状态和颜色

如果您想重置任何状态外观到其原始设置,只需使用 resetStateresetAllStates

tableview.setText(to: "Server error", forState: .error)
tableview.setText(to: "Loading data from disk...", forState: .loading)
tableview.setText(to: "There were no results for your query", forState: .empty)

// ...

tableview.reset(state: .error) // Only error state will be reset

// ...
tableview.resetAllStates() // Every state will be reset to default values

由于颜色与状态无关,当您需要为单个对象定义自定义颜色时,必须在设置该状态时每次都设置这些颜色,并且在显示另一个对象时重置它们。

tableview.setImageTint(to: .red)
tableview.setTextColor(to: .yellow)
tableview.setState(to: .error)

// ...

tableview.resetTextColor()
tableview.resetImageTint()
tableview.setState(to: .empty)

贡献

如果您想为 StatefulCollections 贡献,请查看 LICENSE 文件以获取更多信息。

元数据

Guillem Espejo – [email protected]

在 MIT 许可证下分发。更多信息请参阅 LICENSE 文件。

https://github.com/GuillemEspejo/github-link