安卓那邊的開源庫 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