ios基于MJRefresh实现上拉刷新和下拉加载动画效果

发布时间 - 2026-01-11 02:45:30    点击率:

本文介绍了ios基于MJRefresh实现上拉刷新和下拉加载动画效果,分享给大家,具体如下:

目录

1、 头部刷新动画

2、尾部刷新动画

头部刷新动画

#import <MJRefresh/MJRefresh.h>

@interface HZNormalHeader : MJRefreshGifHeader

@end
#import "HZNormalHeader.h"

@implementation HZNormalHeader

#pragma mark - 重写父类的方法
- (void)prepare{
  [super prepare];

  // 设置普通状态的动画图片
  NSMutableArray *idleImages = [NSMutableArray array];
  for (NSUInteger i = 1; i<=60; i++) {
    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_anim__000%zd", i]];
    [idleImages addObject:image];
  }
  [self setImages:idleImages forState:MJRefreshStateIdle];

  // 设置即将刷新状态的动画图片(一松开就会刷新的状态)
  NSMutableArray *refreshingImages = [NSMutableArray array];
  for (NSUInteger i = 1; i<=3; i++) {
    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_loading_0%zd", i]];
    [refreshingImages addObject:image];
  }
  [self setImages:refreshingImages forState:MJRefreshStatePulling];

  // 设置正在刷新状态的动画图片
  [self setImages:refreshingImages forState:MJRefreshStateRefreshing];

  //隐藏时间
  self.lastUpdatedTimeLabel.hidden = NO;
  //隐藏状态
  self.stateLabel.hidden = NO;
}

实现部分

self.tableView.mj_header = [HZNormalHeader headerWithRefreshingBlock:^{
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
      [self.tableView.mj_header endRefreshing];
    });

  }];

尾部刷新动画

#import <MJRefresh/MJRefresh.h>

@interface XZZNormalFooter : MJRefreshAutoGifFooter

@end
#import "XZZNormalFooter.h"

@implementation XZZNormalFooter


#pragma mark - 重写父类的方法
- (void)prepare{
  [super prepare];

  // 设置普通状态的动画图片
  NSMutableArray *idleImages = [NSMutableArray array];
  for (NSUInteger i = 1; i<=60; i++) {
    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_anim__000%zd", i]];
    [idleImages addObject:image];
  }
  [self setImages:idleImages forState:MJRefreshStateIdle];

  // 设置即将刷新状态的动画图片(一松开就会刷新的状态)
  NSMutableArray *refreshingImages = [NSMutableArray array];
  for (NSUInteger i = 1; i<=3; i++) {
    UIImage *image = [UIImage imageNamed:[NSString stringWithFormat:@"dropdown_loading_0%zd", i]];
    [refreshingImages addObject:image];
  }
  [self setImages:refreshingImages forState:MJRefreshStatePulling];

  // 设置正在刷新状态的动画图片
  [self setImages:refreshingImages forState:MJRefreshStateRefreshing];

  //隐藏时间
//  self.lastUpdatedTimeLabel.hidden = NO;
  /*隐藏*/
  self.refreshingTitleHidden = YES;
  //隐藏状态
  self.stateLabel.hidden = YES;
}

@end

实现部分

self.tableView.mj_footer = [XZZNormalFooter footerWithRefreshingBlock:^{
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
      [self.tableView.mj_footer endRefreshing];
    });
  }];

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# ios  # 上拉加载下拉刷新  # ios下拉刷新  # ios上拉加载  # iOS实现MJRefresh下拉刷新(上拉加载)使用详解  # 举例讲解iOS中延迟加载和上拉刷新/下拉加载的实现  # iOS开发之UITableView与UISearchController实现搜索及上拉加载  # 下拉刷新实例代码  # iOS列表上拉(平滑加载数据)自动加载数据的问题解决  # 就会  # 重写  # 给大家  # 大家多多  # 加载  # pragma  # super  # prepare  # mark  # void  # UIImage  # image  # NSUInteger  # NSMutableArray  # idleImages  # array  # implementation  # pre  # class  # brush 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251811 】 【 AI营销90571


相关推荐: 高防网站服务器:DDoS防御与BGP线路的AI智能防护方案  Android GridView 滑动条设置一直显示状态(推荐)  简单实现Android验证码  宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  php做exe能调用系统命令吗_执行cmd指令实现方式【详解】  Java类加载基本过程详细介绍  HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  手机网站制作与建设方案,手机网站如何建设?  如何在橙子建站上传落地页?操作指南详解  Laravel怎么创建控制器Controller_Laravel路由绑定与控制器逻辑编写【指南】  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  Laravel如何生成API文档?(Swagger/OpenAPI教程)  Laravel用户密码怎么加密_Laravel Hash门面使用教程  Laravel如何实现模型的全局作用域?(Global Scope示例)  作用域操作符会触发自动加载吗_php类自动加载机制与::调用【教程】  Laravel如何使用Spatie Media Library_Laravel图片上传管理与缩略图生成【步骤】  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  Microsoft Edge如何解决网页加载问题 Edge浏览器加载问题修复  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  如何选择可靠的免备案建站服务器?  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Laravel Facade的原理是什么_深入理解Laravel门面及其工作机制  如何在建站宝盒中设置产品搜索功能?  微博html5版本怎么弄发超话_超话进入入口及发帖格式要求【教程】  如何快速登录WAP自助建站平台?  Android滚轮选择时间控件使用详解  网站制作报价单模板图片,小松挖机官方网站报价?  Laravel如何使用集合(Collections)进行数据处理_Laravel Collection常用方法与技巧  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  Laravel怎么连接多个数据库_Laravel多数据库连接配置  Laravel distinct去重查询_Laravel Eloquent去重方法  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何挑选最适合建站的高性能VPS主机?  Laravel如何处理CORS跨域请求?(配置示例)  如何快速使用云服务器搭建个人网站?  Android自定义控件实现温度旋转按钮效果  常州企业网站制作公司,全国继续教育网怎么登录?  如何在服务器上三步完成建站并提升流量?  韩国服务器如何优化跨境访问实现高效连接?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Linux系统命令中screen命令详解  进行网站优化必须要坚持的四大原则  Laravel怎么实现支付功能_Laravel集成支付宝微信支付  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  魔毅自助建站系统:模板定制与SEO优化一键生成指南  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?