FanRefresh(Swift 刷新控件)

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

  1. Add pod 'FanRefresh','~> 0.1.0' to your Podfile.
  2. Run pod install or pod update.
如果 pod search  FanRefresh  查找不到庆尘,更新本地spec倉庫 
pod setup  或者  pod repo update
結(jié)果還是查不到:清空搜索緩存再查詢
rm ~/Library/Caches/CocoaPods/search_index.json 

手動安裝

  1. 下載 FanRefresh項目
  2. 將 FanRefresh項目里面Classes文件夾及內(nèi)的源文件添加(拖放)到你的工程。
  3. 鏈接以下 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高度變化赁遗,不用添加任何代碼,完全搞定

Like(喜歡)

有問題請直接在文章下面留言,或本人github,喜歡就給個Star(小星星)吧族铆!

Email:fqsyfan@gmail.com

github主頁:https://github.com/fanxiangyang

后續(xù)會持續(xù)更新岩四,希望喜歡的可以關(guān)注我

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市哥攘,隨后出現(xiàn)的幾起案子剖煌,更是在濱河造成了極大的恐慌,老刑警劉巖逝淹,帶你破解...
    沈念sama閱讀 217,084評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件耕姊,死亡現(xiàn)場離奇詭異,居然都是意外死亡栅葡,警方通過查閱死者的電腦和手機(jī)茉兰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來欣簇,“玉大人规脸,你說我怎么就攤上這事⌒苎剩” “怎么了莫鸭?”我有些...
    開封第一講書人閱讀 163,450評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長横殴。 經(jīng)常有香客問我被因,道長,這世上最難降的妖魔是什么衫仑? 我笑而不...
    開封第一講書人閱讀 58,322評論 1 293
  • 正文 為了忘掉前任梨与,我火速辦了婚禮,結(jié)果婚禮上惑畴,老公的妹妹穿的比我還像新娘蛋欣。我一直安慰自己航徙,他們只是感情好如贷,可當(dāng)我...
    茶點故事閱讀 67,370評論 6 390
  • 文/花漫 我一把揭開白布陷虎。 她就那樣靜靜地躺著,像睡著了一般杠袱。 火紅的嫁衣襯著肌膚如雪尚猿。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評論 1 300
  • 那天楣富,我揣著相機(jī)與錄音凿掂,去河邊找鬼。 笑死纹蝴,一個胖子當(dāng)著我的面吹牛庄萎,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播塘安,決...
    沈念sama閱讀 40,126評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼糠涛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了兼犯?” 一聲冷哼從身側(cè)響起忍捡,我...
    開封第一講書人閱讀 38,980評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎切黔,沒想到半個月后砸脊,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,414評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡纬霞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,599評論 3 334
  • 正文 我和宋清朗相戀三年凌埂,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诗芜。...
    茶點故事閱讀 39,773評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡侨舆,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出绢陌,到底是詐尸還是另有隱情挨下,我是刑警寧澤,帶...
    沈念sama閱讀 35,470評論 5 344
  • 正文 年R本政府宣布脐湾,位于F島的核電站臭笆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏秤掌。R本人自食惡果不足惜愁铺,卻給世界環(huán)境...
    茶點故事閱讀 41,080評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望闻鉴。 院中可真熱鬧茵乱,春花似錦、人聲如沸孟岛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至斤贰,卻和暖如春智哀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荧恍。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評論 1 269
  • 我被黑心中介騙來泰國打工瓷叫, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人送巡。 一個月前我還...
    沈念sama閱讀 47,865評論 2 370
  • 正文 我出身青樓摹菠,卻偏偏與公主長得像,于是被迫代替她去往敵國和親骗爆。 傳聞我的和親對象是個殘疾皇子辨嗽,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,689評論 2 354

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,095評論 25 707
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件淮腾、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 12,098評論 4 62
  • 皇誠是靈武王朝這一代的皇主谷朝,年過六旬的他身穿一襲五爪金龍長袍洲押,黑色的眼睛炯炯有神,散發(fā)出上位者的氣息. ...
    丶妖兒閱讀 386評論 0 4
  • 現(xiàn)在挑童,我假定你已經(jīng)讀完了成為一個精通詩詞的大神并不難,來跃须,我教你(一)站叼,并且嘗試著去接近那些大詩人,和他們建立了友...
    子聿閱讀 1,782評論 11 37
  • 雨菇民, 斜過我的窗子尽楔, 斜視床上的我, 落寞第练。 打在鐘樓的墻上阔馋, 打斷了回憶, 不痛娇掏, 不癢呕寝。 偶爾, 一滴穿過透明...
    冰糖葫蘆要原味閱讀 154評論 0 1