PageState 0.2.0

PageState 0.2.0

zhaoshouwen 维护。



PageState 0.2.0

PageState

PageState 关注页面状态的切换以及状态视图在容器视图中的布局方式,不关心状态视图的具体内容。通过 PageState 可以方便地管理视图各种状态之间的切换,例如“加载中”、“网络错误”、“空数据”等。

对 UIScrollView、UITableView、UICollectionView 进行扩展:

  1. 有数据时自动隐藏,需要调用tableView.ps.realoadData()
  2. 控制显示状态视图时是否可滑动;

示例

要运行示例项目,首先克隆仓库,然后从 Example 目录运行 pod install

效果

要求

  • iOS 10.0+
  • Xcode 10.0+
  • Swift 4.2+

安装

PageState 通过 CocoaPods 提供。要安装,只需将以下行添加到您的 Podfile:

pod 'PageState'

用法

  1. 实现 PageStateItem 协议
// MARK: - 系统组件直接实现 PageStateItem 协议(不推荐)
// 为系统组件快速实现扩展,不实现的设置项使用默认值
// 不建议这么写
// 1. 会污染UILabel的命名空间
// 2. 无法PageStateItem设置项无法重写为存储属性,无法在外部修改
//extension UILabel: PageStateItem { 
//    // 布局改为居中,UILabel可以自约束宽高
//    public var layoutStyle: PageStateLayoutStyle {
//        return .center(offset: .zero)
//    }
//}

// MARK: - 子类化
class PSLabelItem: UILabel, PageStateItem {
    // 布局改为居中,UILabel可以自约束宽高
    // 时候用计算属性,不让外部修改
    public var layoutStyle: PageStateLayoutStyle {
        return .center(offset: .zero)
    }
    
    // 重写为存储属性,外部可修改
    var isScrollAllowed: Bool = false
    
    // 自定义快捷方法
    static func empty(text: String = "暂无数据") -> PSLabelItem {
        let label = PSLabelItem()
        label.font = .systemFont(ofSize: 16, weight: .regular)
        label.textColor = .lightGray
        label.text = text
        return label
    }
}`
  1. 给容器视图设置各种状态
// 加载中
tableView.ps.item = PSLabelItem.empty(text: "加载中...")

// 移除状态视图
tableView.ps.item = nil

有关更多用法说明,请参阅文档 Usage 或查看示例

作者

zhaoshouwen, [email protected]

许可协议

PageState 可在 MIT 许可协议下使用。有关更多信息,请参阅 LICENSE 文件。