https://dribbble.com/shots/2114816-Trello-Navigation
我非常喜欢 SergioChan 用 Objective-C 编写的 SCTrelloNavigation,所以我尝试用 Swift 重新编写了一次。
API 和代码结构与 SCTrelloNavigation 有一定的区别,定制化更好一些,所以使用时编写的代码会更多一些。但使用起来仍然是超级简单,就像使用 UITableView 一样。
trelloView = TrelloView(frame: CGRect(x: 0, y: 0, width: ScreenWidth, height: ScreenHeight), tabCount: 5, trelloTabCells: { () -> [UIView] in
return [
TrelloListTabViewModel.tabView("BACKLOG", level: 3),
TrelloListTabViewModel.tabView("BRIEFS", level: 5),
TrelloListTabViewModel.tabView("DESIGN", level: 2),
TrelloListTabViewModel.tabView("USER TESTING", level: 4),
TrelloListTabViewModel.tabView("USER TESTIN", level: 1)
]
})
只需要设置 tab 的数量和对应 tab 的视图。
注意:tabCount 需要和 tabCell 数量保持一致。
trelloView.delegate = self
trelloView.dataSource = self
就像使用 UITableView 一样,实现相应的协议即可~
因为使用了多个 tableView,所以为了区分不同 tab 的数据,我这里将数据放在了对应的 tableView 上。当然,您也可以使用其他您喜欢的其他方法,如果您有更好的想法,欢迎提交拉取请求(PR)。
项目中 TrelloAnimate、TrelloDefine、TrelloFunction、TrelloListTableView、TrelloListTabView、TrelloListView、TrelloView、UIViewExt 是必要文件。
出于安全考虑,挂在 tableView 上的数据必须在数组中声明类型,最好不要直接改为 AnyObject 。:]
如果您对 Swift 或者函数式编程很感兴趣,欢迎阅读源码一起学习。:]
MIT