安卓那边的开源库 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平台来。经过一年多的努力总算初步完成了。

效果展示

DeliveryMaterial
header-delivery.gifheader-material.gif
Refresh-your-deliveryMaterialHeader
BezierRadarBezierCircle
header-radar.gifheader-circle.gif
Pull To RefreshPull Down To Refresh
FlyRefreshDropBox
header-fly.gifheader-drop.gif
FlyRefreshDropBoxHeader
PhoenixTaurus
header-phoenix.gifheader-taurus.gif
Yalantis/PhoenixYalantis/Taurus
BattleCityHitBlock
header-game-tank.gifheader-game-block.gif
FunGame/BattleCityFunGame/HitBlock
StoreHouseWaveSwipe
header-store.gifheader-wave.gif
CRefreshLayoutWaveSwipeRefreshLayout
OriginalClassics
header-original.gifheader-classics.gif
FlyRefreshClassicsHeader

如果需要体验上面列出的各种刷新头,需要克隆 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

scwang90
346 声望88 粉丝