FanRefresh
現(xiàn)在swift上的庫已經(jīng)很多了擎场,但是對比object-c還是很少躏仇,并且慕嚷,swift版本變動太大管闷,swift1.0-swift2.3經(jīng)常變動戚长,直到swift3.0出來见间,這個大版本變動后推励,才穩(wěn)定迎瞧,3.0-4.0變動不大甜癞,可以完美運行究驴,現(xiàn)在已經(jīng)支持最新swift4.0 镊绪,并且對iOS 11適配希望你們喜歡,并且使用簡單洒忧。
github項目主頁:https://github.com/fanxiangyang/FanRefresh
Swift Refresh Lib (一個swift語言的上拉加載下拉刷新的庫)
Introduce(介紹)
==============
FanRefresh ScrollView Refresh蝴韭。
超級好用的上拉下拉,git圖片定制熙侍,系統(tǒng)UIRefreshControl,其他用戶可以自己定制DIY
- Refresh — 基本類擴(kuò)展和常量定義榄鉴。
- Header — 下拉刷新控件。
- Footer — 上拉加載控件蛉抓。
Installation(安裝)
CocoaPods
- Add
pod 'FanRefresh','~> 0.1.0'
to your Podfile. - Run
pod install
orpod update
.
如果 pod search FanRefresh 查找不到庆尘,更新本地spec倉庫
pod setup 或者 pod repo update
結(jié)果還是查不到:清空搜索緩存再查詢
rm ~/Library/Caches/CocoaPods/search_index.json
手動安裝
- 下載 FanRefresh項目
- 將 FanRefresh項目里面Classes文件夾及內(nèi)的源文件添加(拖放)到你的工程。
- 鏈接以下 frameworks:
- UIKit
- Foundation
- ImageIO
Requirements(系統(tǒng)要求)
FanRefresh該項目最低支持 iOS 8.0巷送。
注意:應(yīng)該能夠支持到iOS7的驶忌,沒有設(shè)備嘗試,如果不能可以告訴我
Function Example(功能事例)
1.Example List(功能列表)

動畫
2.下拉刷新
weak var weakSelf=self
//下拉
self.tableView.fan_header = FanRefreshHeaderDefault.headerRefreshing(refreshingBlock: {
weakSelf?.fan_loadData()
})
3.上拉加載
weak var weakSelf=self
//上拉
self.tableView.fan_footer=FanRefreshFooterDefault.footerRefreshing(refreshingBlock: {
weakSelf?.fan_loadMoreData()
})
4.下拉屬性的修改
weak var weakSelf=self
//下拉
self.tableView.fan_header = FanRefreshHeaderDefault.headerRefreshing(refreshingBlock: {
weakSelf?.fan_loadData()
})
//不轉(zhuǎn)的話笑跛,沒有屬性可以掉用
let fanHeader=self.tableView.fan_header as! FanRefreshHeaderDefault
//修改背景顏色(默認(rèn)透明)
fanHeader.backgroundColor=UIColor.yellow
//文字與菊花之間的間距(默認(rèn)20)
fanHeader.fan_labelInsetLeft=40.0
//修改狀態(tài)字體內(nèi)容(默認(rèn)支持 中文付魔,繁體中文,和英文)
fanHeader.fan_setTitle(title: "下拉可以刷新", state: .Default)
fanHeader.fan_setTitle(title: "松開立即刷新", state: .Pulling)
fanHeader.fan_setTitle(title: "正在刷新數(shù)據(jù)中...", state: .Refreshing)
//修改狀態(tài)和時間顯示的字體顏色和大小樣式
fanHeader.fan_stateLabel.textColor=FanRefreshColor(r: 250, g: 34, b: 43, a: 1)
fanHeader.fan_stateLabel.font=UIFont.boldSystemFont(ofSize: 14)
// MARK: HeaderRefresh特有的
//--------------------------------特有begain-----------------------------------
//下拉時透明度自動增強(qiáng)(默認(rèn)true)
fanHeader.fan_automaticallyChangeAlpha=false
//修改時間顯示的字體顏色和大小樣式
fanHeader.fan_lastUpdatedTimeLabel.textColor=FanRefreshColor(r: 250, g: 34, b: 43, a: 1)
//外部修改時間控件的顯示內(nèi)容(默認(rèn)正確的時間飞蹂,可以+几苍,可以-)
fanHeader.fan_lasUpdateTimeText = { ( lastUpdatTime ) in
return "2017-04-01 12:00:00"
}
//添加5秒種后再次進(jìn)入界面,自動下拉刷新
//如果啟用這個方式陈哑,最好啟動時妻坝,直接調(diào)用 fanHeader.fan_beginRefreshing()
fanHeader.fan_autoRefresh(thanIntervalTime: 5.0)
//--------------------------------特有end-----------------------------------
5.系統(tǒng)自帶UIRefreshControl刷新
//系統(tǒng)自帶簡潔下拉
override func viewDidLoad() {
super.viewDidLoad()
self.dataArray=Array()
let refreshControl = FanRefreshControl.fan_addRefresh(target: self, action: #selector(fan_loadDataControl))
//這樣也是可以的
if #available(iOS 10.0, *) {
self.tableView?.refreshControl = refreshControl
}else{
self.tableView?.fan_refreshControl = refreshControl
}
}
//加載數(shù)據(jù)伸眶,模擬2秒后刷新
func fan_loadDataControl() {
if #available(iOS 10.0, *) {
(self.tableView?.refreshControl as! FanRefreshControl).fan_beginRefreshing()
}else{
self.tableView?.fan_refreshControl?.fan_beginRefreshing()
}
weak var weakTableView=self.tableView
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now()+2.0) {
//這里修改數(shù)據(jù),能防止cell復(fù)用時調(diào)用cell代理數(shù)組越界問題
self.dataArray = ["6","7","8","9","10"]
weakTableView?.reloadData()
if #available(iOS 10.0, *) {
weakTableView?.refreshControl?.endRefreshing()
}else{
weakTableView?.fan_refreshControl?.endRefreshing()
}
}
}
6.自定義Header GIF圖片顯示
weak var weakSelf=self
//下拉
self.tableView.fan_header = FanRefreshHeaderGIF.headerRefreshing(refreshingBlock: {
weakSelf?.fan_loadData()
})
//不轉(zhuǎn)的話刽宪,沒有屬性可以掉用
let fanHeader=self.tableView.fan_header as! FanRefreshHeaderGIF
//隱藏時間
// fanHeader.fan_lastUpdatedTimeLabel.isHidden=true
fanHeader.fan_height = 100
fanHeader.fan_setGifName(name: "loding1", gifState: .Default)
fanHeader.fan_setGifName(name: "loding", gifState: .Refreshing)
// fanHeader.fan_setGifName(name: "loding1", gifState: .Pulling)
//上面可以這樣替換厘贼,也可以放置png,jpg的image對象
fanHeader.fan_gifImages[.Pulling] = UIImage.fan_gif(name: "loding1")
//修改time與GIF間距默認(rèn)5
// fanHeader.fan_labelInsetTop=0
fanHeader.fan_gifImageView.fan_size=CGSize(width: 100, height: 60)
fanHeader.fan_lastUpdatedTimeLabel.textColor=UIColor.red
//fanHeader.fan_lastUpdatedTimeLabel.isHidden=true
7.自定義Footer GIF圖片顯示
weak var weakSelf=self
//下拉
self.tableView.fan_header = FanRefreshHeaderDefault.headerRefreshing(refreshingBlock: {
weakSelf?.fan_loadData()
})
//上拉
self.tableView.fan_footer=FanRefreshFooterGIF.footerRefreshing(refreshingBlock: {
weakSelf?.fan_loadMoreData()
})
//不轉(zhuǎn)的話,沒有屬性可以掉用
let fanFooter=self.tableView.fan_footer as! FanRefreshFooterGIF
//不建議在外部修改狀態(tài)請使用方法
// fanFooter.state = .NoMoreData//(不推薦寫法)
// fanFooter.fan_endRefreshingWithNoMoreData() //(推薦些法)
//更新高度(不要直接self.fan_height = 120)
fanFooter.fan_UpdateHeight(height: 120)
fanFooter.fan_setGifName(name: "loding1", gifState: .Default)
fanFooter.fan_setGifName(name: "loding", gifState: .Refreshing)
// fanFooter.fan_setGifName(name: "loding1", gifState: .NoMoreData)
//上面可以這樣替換圣拄,也可以放置png,jpg的image對象
fanFooter.fan_gifImages[.NoMoreData] = UIImage.fan_gif(name: "loding1")
//修改time與GIF間距默認(rèn)5
fanFooter.fan_labelInsetLeft=0
fanFooter.fan_gifImageView.fan_size=CGSize(width: 100, height: 60)
fanFooter.fan_stateLabel.textColor=UIColor.red
fanFooter.backgroundColor=UIColor.yellow
// fanFooter.fan_isRefreshTitleHidden = true
更新歷史(Version Update)
Release 0.0.3
- 支持簡單的上拉和下拉刷新涂臣,沒有GIF圖片
Release 0.0.4
- 簡化枚舉屬性
- 添加系統(tǒng)控件UIRefreshControl實現(xiàn)下拉刷新(可兼容iOS10)
Release 0.0.5
- 修復(fù)中文字符串長度越界問題
- 修復(fù)調(diào)用時間記錄初次為空時崩潰的處理
- 添加Header和Footer的自定義GIF展示
Release 0.1.0
- swift4編譯,iOS 11適配
- iOS 11售担,tableview高度變化赁遗,不用添加任何代碼,完全搞定