這是MJRefresh的swift版本,先OC原版奉上MJRefresh,JRefresh爲純Swift版本,支持swift3.2以上,iOS8.0以上版本。代碼邏輯和MJRefresh基本如出一轍,原本一開始打算用swift的面向協議思想改寫的,發現行不通只好用原做者如出一轍的繼承思想翻譯成Swift。JRefresh剔除了原有的過時方法,也沒有Selector調用方法(不想再混入OC文件,swift不支持objc_msgSend),只剩下閉包調用。JRefresh github地址git
支持swift3.2 以上, iOS版本8.0以上github
pod JRefresh
swift
JRefresh
文件夾拖到項目中使用backFooter
,主要是一直沒有用到過(一次都沒啊~),因此暫時給取消了,假如反應的人多,下個版本就給加上
tableView.header = JRefreshStateHeader.headerWithRefreshingBlock({[weak self] in
guard let `self` = self else {return}
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: {
self.count += 2
self.tableView.reloadData()
self.tableView.header?.endRefreshing()
})
})
tableView.header?.beginRefreshing()
複製代碼
tableView.header = JRefreshNormalHeader.headerWithRefreshingBlock({[weak self] in
guard let `self` = self else {return}
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: {
self.count += 2
self.tableView.reloadData()
self.tableView.header?.endRefreshing()
})
})
tableView.header?.beginRefreshing()
複製代碼
tableView.header = JChiBaoZiHeader.headerWithRefreshingBlock({[weak self] in
guard let `self` = self else {return}
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: {
self.count += 2
self.tableView.reloadData()
self.tableView.header?.endRefreshing()
})
})
tableView.header?.beginRefreshing()
複製代碼
let header = JRefreshNormalHeader.headerWithRefreshingBlock({[weak self] in
guard let `self` = self else {return}
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: {
self.count += 2
self.tableView.reloadData()
self.tableView.header?.endRefreshing()
})
})
// 設置文字
(header as! JRefreshNormalHeader).setTitle("lee", .Idle)
(header as! JRefreshNormalHeader).setTitle("jiang", .Pulling)
(header as! JRefreshNormalHeader).setTitle("bo", .Refreshing)
// 設置字體
(header as! JRefreshNormalHeader).stateLabel.font = UIFont.systemFont(ofSize: 16)
(header as! JRefreshNormalHeader).lastUpdatedTimeLabel.font = UIFont.systemFont(ofSize: 14)
// 設置顏色
(header as! JRefreshNormalHeader).stateLabel.textColor = UIColor.red
(header as! JRefreshNormalHeader).lastUpdatedTimeLabel.textColor = UIColor.blue
header.beginRefreshing()
tableView.header = header
複製代碼
tableView.footer = JRefreshAutoNormalFooter.footerWithRefreshingBlock({[weak self] in
guard let `self` = self else {return}
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: {
self.count += 2
self.tableView.reloadData()
self.tableView.footer?.endRefreshing()
})
})
複製代碼
tableView.footer = JChiBaoZiFooter.footerWithRefreshingBlock({[weak self] in
guard let `self` = self else {return}
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: {
self.count += 5
self.tableView.reloadData()
self.tableView.footer?.endRefreshing()
if self.count >= 40 {
self.tableView.footer?.endRefreshingWithNoMoreData()
}
})
})
(tableView.footer as? JRefreshAutoGifFooter)?.refreshingTitleHidden = true
複製代碼
tableView.footer = JDIYAutoFooter.footerWithRefreshingBlock({[weak self] in
guard let `self` = self else {return}
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3, execute: {
self.count += 5
self.tableView.reloadData()
self.tableView.footer?.endRefreshing()
if self.count >= 40 {
self.tableView.footer?.endRefreshingWithNoMoreData()
}
})
})
複製代碼