Raclette 2.0.3

Raclette 2.0.3

测试已测试
语言语言 SwiftSwift
许可 MIT
发布最后发布2017年9月
SwiftSwift版本4.0
SPM支持SPM

Roman Blum 维护。



Raclette 2.0.3

  • 作者:
  • rmnblm

🧀Raclette

Raclette 是一个简单的 UITableView 扩展,可以动态添加部分和行。

Raclette(在英语中发音为 ruck-lett)是瑞士的国菜。传统的菜肴可以描述为与煮熟(或烤制)的马铃薯和芥菜及腌洋葱一起食用的融化的奶酪。

内容

快速入门

Raclette可以让您在几秒钟内轻松地修改您的 UITableView

示例

首先要做的是用Raclette包装您的UITableView

let raclette = Raclette(tableView: tableView)

完成。您可以出发了!🎉

raclette.isRowHighlightingEnabled = true
raclette.createSection { section in 
  section.headerTitle = "My section header"
  section.footerTitle = "My section footer"
  section.createRow { row in
    row.configuration = { cell in
      cell.textLabel?.text = "Hello World!"
    }
    row.shouldHighlight = { cell, _ in
      return false // overrides global setting
    }
    row.didSelect = { cell, tableInfo in
      cell.textLabel?.text = "Selected"
      tableInfo.tableView.deselectRow(at: tableInfo.indexPath, animated: true)
    }
  }
}

结果

quickstart_result

有关更多示例,请参阅 示例项目

功能

  • 易于集成到您现有的 UITableView 扩展中
  • 支持动态行高
  • 支持使用内联闭包来减少代码
  • 使用继承自 UITableViewCell 的自己的单元格
  • 通过其标识符重新使用单元格是由您自动管理的
  • 提供了对 UIScrollViewDelegate 的重定向
  • 无需担心 UITableViewDelegateUITableViewDataSource 的实现

安装

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

pod 'Raclette'

文档

  • 使用 tableView.isRowHighighlightingEnabled 全局启用/禁用行高亮
  • 使用 tableView.isDynamicRowHeightEnabled 全局启用/禁用动态行高
  • 使用 tableView.isAutomaticRowDeselectionEnabled 全局启用/禁用自动行取消选择
  • 通过 tableView.scrollViewDelegate = self 将滚动视图代理重定向到调用实例(注意必须在类头中实现 UIScrollViewDelegate

行可以带或不带指定部分添加到表格中。如果您未指定部分,Raclette会将行添加到表格的最后一个部分。如果您之前没有添加部分,Raclette会为您创建一个默认的部分。

raclette.createRow { row in
  row.height = 50
}

可用的代理方法

  • shouldHighlight
  • didHighlight
  • didUnhighlight
  • willSelect
  • willDeselect
  • didSelect
  • didUnselect

单元格

单元格是行的实际UI表示。

动态高度

动态高度默认全局对所有单元格启用。以下是如何使用并从动态高度功能受益的示例(使用默认的UITableViewCell类)

raclette.createRow { row in
  row.configuration = { cell in
    cell.textLabel?.numberOfLines = 0
    cell.textLabel?.text = "Very long text..."
  }
}

您可以关闭特定行的动态高度。

raclette.createRow { row in
  row.dynamicHeight = false
}

或者您可以在全局关闭动态行高。

raclette.isDynamicRowHeightEnabled = false

为了使动态高度与自定义单元格一起工作,您必须正确设置约束。

正确设置约束是使动态单元格高度与自动布局一起工作的最难和最重要的部分。如果您在这里犯了一个错误,可能会阻止其他所有功能正常工作——所以请多花点时间!

为了确定每行的实际高度,表格视图会自动询问每个单元格其contentView需要多少高度(基于contentView的已知固定宽度,这基于表格视图的宽度,减去任何额外的部分,比如部分索引或附件视图)以及您添加到单元格contentView和子视图的自动布局约束。 来源

自定义单元格

自定义单元格必须继承自UITableViewCell,可以像这样使用

class CustomCell: UITableViewCell {
  @IBOutlet weak var testLabel: UILabel!
}

raclette.createRow { (row: Row<CustomCell>) in
  row.configuration = { cell in
    cell.testLabel.text = "My Test Label"
  }
}

部分

添加部分就像添加行一样简单。

raclette.createSection { section in
  section.headerTitle = "My Section Title"
}

致谢

Raclette受到ShoyuTableManager的极大启发。

许可

Raclette在MIT许可下发布。有关详细信息,请参阅LICENSE。