欢迎光临
我们一直在努力

9种自由选择动画样式的第三方上下拉刷新库

建站超值云服务器,限时71元/月

9种自由选择动画样式的第三方上下拉刷新库

项目介绍:

GitHub license
platform
language
Email

概述

高度可扩展、自定义、多样式的刷新框架。

比较

EGOTableViewPullRefresh SVPullToRefresh MJRefresh KafkaRefresh
多种样式选择 <img width="20px" height="23px" src="Assets/unsupport.png"></img> <img width="20px" height="23px" src="Assets/unsupport.png"></img> <img width="20px" height="20px" src="Assets/support.png"></img> <img width="20px" height="20px" src="Assets/support.png"></img>
刷新中允许交互 <img width="20px" height="20px" src="Assets/bug.png"> <img width="20px" height="20px" src="Assets/bug.png"> <img width="20px" height="23px" src="Assets/bug.png"></img> <img width="20px" height="20px" src="Assets/support.png"></img>
持续维护 <img width="20px" height="23px" src="Assets/unsupport.png"></img> <img width="20px" height="23px" src="Assets/unsupport.png"></img> <img width="20px" height="20px" src="Assets/support.png"></img> <img width="20px" height="20px" src="Assets/support.png"></img>
进度回调 <img width="20px" height="23px" src="Assets/unsupport.png"></img> <img width="20px" height="23px" src="Assets/unsupport.png"></img> <img width="20px" height="23px" src="Assets/unsupport.png"></img> <img width="20px" height="20px" src="Assets/support.png"></img>

特点

特点 描述
支持多样式选择与自定义 KafkaRefresh内置多种刷新样式,且可对样式进行自定义。扩展接口可让开发者集成更多丰富的UI效果。
非刷新状态自动隐藏 能避免开发者手动调整contentInset后刷新控件的出现而影响视觉体验;最常见的情况时,不存在数据时,底部的刷新的控件未隐藏,使用KafkaRefresh能避免该问题。
刷新结束时滑动抗抖动 当控件结束刷新,UIScrollView如果处于滑动状态,KafkaRefresh将根据刷新控件此时是否显示控制UIScrollView的contntOffset
支持抗内容偏移的滚动刷新 当用户滑动列表时,KafkaRefresh不会擅自调整列表的cntentOffset,KafkaRefresh不管处于何种刷新状态,都不会过多的调整列表位置。因此,您的列表集成KafkaRefresh后,滑动依旧是预期效果
支持设置触发刷新的偏移阀值 偏移阀值可自定义,自我把控触发刷新的条件;偏移阀值是基于控件高度的倍数,且必须大于1.0;否则无效。
支持全局配置 KafkaRefreshDefaults支持全局设置样式
支持进度回调 实时回调拖拽的偏移比例,对于扩展接口,可根据进度调整动画
自适应contentInset系统调整与手动调整 自适应iOS7以后UINavigationController自动调整scrollview contentOffset,KafkaRefresh也对iOS 11进行了适配;当您手动设置了contentInset的值,也无需担心KafkaRefresh会影响到视觉效果。
解决刷新状态分组视图悬停问题 当UITableView优多个分组,且分组视图的高度非0时,刷新状态将出现半空悬停的效果。从EGO以来,尝试解决该问题的刷新框架始于MJRefresh,但可惜的是,MJRefresh并未完美解决该问题(本质是因为contentOffset并非连续变化)。KafkaRefresh即使在刷新状态快速滑动,也能避开该问题的出现。
文档覆盖率100% 可在头文件中查看所有方法和类的使用
支持横竖屏切换自适应 无需在横竖屏切换时考虑刷新问题
iOS 7+ 支持iOS 7以上系统。包括iPhone X

安装

  • CocoaPods

pod 'KafkaRefresh'
  • Carthage

如果您想通过carthage安装 , 请您申请一个pull request.

使用

1.引入头文件
 #import "KafkaRefresh.h" 
2.初始化控件
  • 方式一

 [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:^{
        //.....
}];
3.手动触发刷新
 [self.tableView.headRefreshControl beginRefreshing];

 [self.tableView.footRefreshControl beginRefreshing];
4.结束刷新
 [self.tableView.headRefreshControl endRefreshing];

 [self.tableView.footRefreshControl endRefreshing];

自定义

以KafkaheadRefreshControl为例:

 #import "KafkaheadRefreshControl.h"
 @interface CustomHeader : KafkafootRefreshControl
 @end

*
.m

@implementation CustomHeader 

- (void)setupProperties{
   [super setupProperties];
   //初始化属性
}

- (void)kafkaDidScrollWithProgress:(CGFloat)progress max:(const CGFloat)max{
   //进度回调
}

- (void)kafkaRefreshStateDidChange:(KafkaRefreshState)state{
   [super kafkaRefreshStateDidChange:state];
   
   switch (state) {
       case KafkaRefreshStateNone:{
           break;
       }
       case KafkaRefreshStateScrolling:{
           break;
       }
       case KafkaRefreshStateReady:{
           break;
       }
       case KafkaRefreshStateRefreshing:{ 
           break;
       }
       case KafkaRefreshStateWillEndRefresh:{ 
           break;
       }
   }
}
@end

交流

  1. 如需要帮助,请邮件 <xorshine@icloud.com>或者wechat:Xiangxh1015;

  2. 如遇到bug,请在Github open an issue,烦请您提供重现步骤;

  3. 个人精力有限,Kafka提供的回调接口足够去增加更丰富的UI效果,很欢迎您一起参与,并提交pull request;

  4. 如果您对该库有更好的设计思路,请务必e-mail或wechat。

License

KafkaRefresh采用MIT开源协议。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » 9种自由选择动画样式的第三方上下拉刷新库
分享到: 更多 (0)