之前寫自己項(xiàng)目內(nèi)部的應(yīng)用調(diào)試工具箱:JXCaptain的時(shí)候。需要一個(gè)顯示數(shù)據(jù)庫的視圖,需要有行列表頭固定,并且表單內(nèi)容可以上下左右滑動(dòng)查看的特性,就像Excel視圖一樣。整個(gè)功能就只有一個(gè)ExcelView類,邏輯清晰簡單,便于閱讀和修改定制需求。
預(yù)覽
image
Github地址
特點(diǎn)
- 使用純Swift編寫;
- 功能簡潔,便于源碼閱讀;
- 代碼邏輯清晰,便于根據(jù)自己需求修改代碼;
使用示例
初始化ExcelView
excel = ExcelView(frame: CGRect.zero)
excel.dataSource = self
excel.delegate = self
view.addSubview(excel)
實(shí)現(xiàn)ExcelViewDataSource代理方法
func numberOfRows(in excelView: ExcelView) -> Int {
return 50
}
func numberOfColumns(in excelView: ExcelView) -> Int {
return 10
}
func excelView(_ excelView: ExcelView, columnNameAt column: Int) -> String {
return "col:\(column)"
}
func excelView(_ excelView: ExcelView, rowDataAt row: Int) -> [String] {
return dataSource[row]
}
func excelView(_ excelView: ExcelView, rowHeightAt row: Int) -> CGFloat {
return 40
}
func excelView(_ excelView: ExcelView, columnWidthAt column: Int) -> CGFloat {
return 120
}
func widthOfLeftHeader(in excelView: ExcelView) -> CGFloat {
return 50
}
func heightOfTopHeader(in excelView: ExcelView) -> CGFloat {
return 40
}
實(shí)現(xiàn)ExcelViewDelegate代理方法
func excelView(_ excelView: ExcelView, didTapGridWith content: String) {
print("didTapGridWith:\(content)")
}
func excelView(_ excelView: ExcelView, didTapColumnHeaderWith name: String) {
print("didTapColumnHeaderWith:\(name)")
}