火遍安卓的下拉刷新框架 SmartRefresh 出 IOS 版了?

安卓那邊的開源庫 SmartRefresh 之所以能火,我個人覺得是因為 SmartRefresh 聚集了各種優質刷新樣式于一身,對樣式的切換非常簡單,還不用考慮更換樣式之后的兼容性穩定性問題,在 SmartRefresh 出現之前 github 上也有各種個樣優秀樣式的刷新,但是切換的成本比較高,風險也高;同時他能一個框架集成各種風格的樣式,也說明它的擴展性非常強,即使找不到適合自己的樣式,也可以通過自定義樣式來解決。

那么現在我帶來了一個好消息,IOS版本 SmartRefreshControl 終于發布了!

github: 項目地址
gitee: 項目地址 (國內速度快)

簡介

SmartRefreshControl 是 SmartRefreshLayout 的IOS版,和Android版在 理念外觀 上面保留相同的設計,但是由于 Android 和 IOS 兩個系統的差別,IOS版本在功能使用和特性上與安卓版有所差別。刷新控件使用 ObjectiveC 語言編寫,演示 DemoApp 使用 Swift 語言編寫。

目前 SmartRefreshControl 功能還不是很強大,也不太穩定,只是在界面層面實現了安卓版的功能。歡迎大家來體驗與發現BUG,不推薦使用在正式項目中。

由來

大學畢業后我大部分時間從事安卓開發,在安卓版 SmartRefresh 大火之后,我開始轉型 IOS 開發。到現在已經有三年的IOS開發經驗,由于IOS上也還未有像 SmartRefresh 一樣同一個開源庫多種外觀樣式的刷新庫,也想鞏固自己所學的 IOS技能,我決定在閑暇之余把安卓 SmartRefresh 復刻到IOS平臺來。經過一年多的努力總算初步完成了。

效果展示

Delivery Material
header-delivery.gif
header-material.gif
Refresh-your-delivery MaterialHeader
BezierRadar BezierCircle
header-radar.gif
header-circle.gif
Pull To Refresh Pull Down To Refresh
FlyRefresh DropBox
header-fly.gif
header-drop.gif
FlyRefresh DropBoxHeader
Phoenix Taurus
header-phoenix.gif
header-taurus.gif
Yalantis/Phoenix Yalantis/Taurus
BattleCity HitBlock
header-game-tank.gif
header-game-block.gif
FunGame/BattleCity FunGame/HitBlock
StoreHouse WaveSwipe
header-store.gif
header-wave.gif
CRefreshLayout WaveSwipeRefreshLayout
Original Classics
header-original.gif
header-classics.gif
FlyRefresh ClassicsHeader

如果需要體驗上面列出的各種刷新頭,需要克隆 git 源碼,用Xcode編譯運行Demo項目即可。

簡單用例

1.在 Podfile 中添加依賴


pod 'SmartRefreshControl', '~> 0.1.0'

2.在 ViewController 中添加刷新控件


#import <SmartRefreshControl/SmartRefreshControl.h>

@interface DemoTableViewController ()

@property (strong, nonatomic) IBOutlet UITableView *tableView;  
@property (strong, nonatomic) UIRefreshBezierRadarHeader *header;  

@end

@implementation DemoTableViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    //方式1: 初始化同時綁定事件
    [self setHeader:[UIRefreshBezierRadarHeader attach:self.tableView target:self action:@selector(onRefresh)]];

    //方式2: 先初始化,再綁定事件
    [self setHeader:[UIRefreshBezierRadarHeader attach:self.tableView]];
    [self.header addTarget:self action:@selector(onRefresh)];

    //方式3: 先創建,再綁定
    [self setHeader:[UIRefreshBezierRadarHeader new]];
    [self.header attach:self.tableView];
    [self.header addTarget:self action:@selector(onRefresh)];

}

@end

3.添加刷新監聽事件


@implementation DemoTableViewController

- (void)onRefresh {
    [self.header finishRefresh]; //關閉刷新,可以改成請求網絡,成功/失敗之后再關閉刷新
}

@end

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容