安卓那边的开源库 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 |
---|---|
Refresh-your-delivery | MaterialHeader |
BezierRadar | BezierCircle |
---|---|
Pull To Refresh | Pull Down To Refresh |
FlyRefresh | DropBox |
---|---|
FlyRefresh | DropBoxHeader |
Phoenix | Taurus |
---|---|
Yalantis/Phoenix | Yalantis/Taurus |
BattleCity | HitBlock |
---|---|
FunGame/BattleCity | FunGame/HitBlock |
StoreHouse | WaveSwipe |
---|---|
CRefreshLayout | WaveSwipeRefreshLayout |
Original | Classics |
---|---|
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