内置多种动画、可自定义和灵活的iOS下拉刷新框架。
Bug提交
·
需求提交
KafkaRefreshStyle | Top Screenshots | Bottom Screenshots |
Native | ||
ReplicatorWoody | ||
ReplicatorAllen | ||
ReplicatorCircle | ||
ReplicatorDot | ||
ReplicatorArc | ||
ReplicatorTriangle | ||
AnimatableRing | ||
AnimatableArrow |
- 支持多样式选择与自定义
内置9种动画样式
- 非刷新状态自动隐藏
即使手动调整过contentInset,依然能够在非刷新状态自动隐藏影。最常见的情况是:当数据量过少,UITableView停止刷新后,用户依旧能看到刷新控件的存在,从而影响的视觉体验。KafkaRefresh首次解决了该问题。
- 刷新结束时抗抖动
当UIScrollView处于刷新状态,且用户滑动UIScrollView,当刷新结束时,KafkaRefresh不会调整UIScrollView的内容,从而导致页面跳动;
- 支持设置控件高度
stretchOffsetYAxisThreshold
是根据刷新控件的高度进行的比例调整。如:当设置stretchOffsetYAxisThreshold
为1.5时,触发刷新的偏移距离将调整为原来的1.5倍。
- 支持全局配置
KafkaRefreshDefaults
类似一个配置表,通过该配置表配置全局的刷新样式,而无需在每一个页面初始化或者绑定刷新控件。
- 支持进度回调
实时回调拖拽的偏移比例,对于扩展接口,可根据进度调整动画。该接口的开放可用于扩展更多的刷新东亚样式。
- 自适应contentInset系统调整与手动调整
自适应iOS7以后UINavigationController自动调整scrollview contentOffset,KafkaRefresh也对iOS 11进行了适配;当您手动设置了contentInset的值,也无需担心KafkaRefresh会影响到视觉效果。
- 解决刷新状态分组视图悬停问题
即使在列表滑动时,分组视图都将跟随ScrollView滑动(即使处于高速滑动状态下!)。
- 文档覆盖率100%、支持横竖屏切换自适应、iOS 7+。
- CocoaPods
pod 'KafkaRefresh'
- Carthage
如果您想通过carthage安装 , 请您申请一个pull request.
#import "KafkaRefresh.h"
- 方式一
[self.tableView bindRefreshStyle:KafkaRefreshStyleAnimatableArrow
fillColor:MainColor
atPosition:KafkaRefreshPositionHeader refreshHanler:^{
//.......
}];
[self.tableView bindRefreshStyle:KafkaRefreshStyleAnimatableArrow
fillColor:MinorColor
atPosition:KafkaRefreshPositionFooter
refreshHanler:^{
//.....
}];
- 方式二
KafkaArrowHeader * arrow = [[KafkaArrowHeader alloc] init];
arrow.refreshHandler = ^{
//.....
};
self.tableView.headRefreshControl = arrow;
- 方式三 全局配置
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
[[KafkaRefreshDefaults standardRefreshDefaults] setHeaderDefaultStyle:KafkaRefreshStyleAnimatableRing];
return YES;
}
[self.tableView bindDefaultRefreshStyleAtPosition:KafkaRefreshPositionHeader refreshHanler:^{
//.....
}];
[self.tableView.headRefreshControl beginRefreshing];
[self.tableView.footRefreshControl beginRefreshing];
/*
一般方式结束刷新
*/
- (void)endRefreshing;
/*
结束刷新且需要提示文字
*/
- (void)endRefreshingWithAlertText:(NSString *)text completion:(dispatch_block_t)completion;
/*
结束刷新且不再需要刷新功能
*/
- (void)endRefreshingAndNoLongerRefreshingWithAlertText:(NSString *)text;
/**
当调用过 ‘endRefreshingAndNoLongerRefreshingWithAlertText’,
且重新需要恢复刷新功能室,调用下面方法
*/
- (void)resumeRefreshAvailable;
以KafkaheadRefreshControl为例:
#import "KafkaheadRefreshControl.h"
@interface CustomHeader : KafkafootRefreshControl
@end
@implementation CustomHeader
- (void)setupProperties
{
[super setupProperties];
//初始化属性
}
- (void)kafkaDidScrollWithProgress:(CGFloat)progress max:(const CGFloat)max
{
//进度回调
}
- (void)kafkaRefreshStateDidChange:(KafkaRefreshState)state
{
[super kafkaRefreshStateDidChange:state];
}
@end
- 如需要帮助,请邮件 [email protected]
- 个人精力有限,KafkaRefresh开放的接口足够去扩展更丰富的UI效果,欢迎您参与,并提交pull request
KafkaRefresh采用MIT开源协议。