Apple在iOS 6中添加了UIRefreshControl,但只能在UITableViewController中使用,不能在UIScrollViewUICollectionView中使用。

从iOS 10开始,UIScrollView增加了一个refreshControl属性,用于把配置好的UIRefreshControl赋值给该属性,这样UIScrollView就有了下拉刷新功能。和之前在UITableViewController中使用一样,不需要设置UIRefreshControlframe,只需要配置UIRefreshControl

因为UITableViewUICollectionView继承自UIScrollView,所以UITableViewUICollectionView也继承了refreshControl属性,也就是可以很方便的把刷新控件添加到滚动视图、集合视图和表视图(不再需要表视图控制器)。

创建刷新控件

UIScrollViewUITableViewUICollectionView中创建刷新控件步骤是一样的。在这个示例中,在ViewControllerviewDidLoad方法中创建并配置UIRefreshControlscrollView是连接到Interface Builder中的UIScrollView的IBOutlet属性。

 - (void)viewDidLoad
{
[super viewDidLoad]; // 1 先判断系统版本
if ([NSProcessInfo.processInfo isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){,,}])
{
// 2 初始化
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init]; // 3.1 配置刷新控件
refreshControl.tintColor = [UIColor brownColor];
NSDictionary *attributes = @{NSForegroundColorAttributeName : [UIColor redColor]};
refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull To Refresh" attributes:attributes];
// 3.2 添加响应事件
[refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged]; // 4 把创建的refreshControl赋值给scrollView的refreshControl属性
self.scrollView.refreshControl = refreshControl;
}
}

注意以下几点:

  1. UIScrollView从iOS 10开始才有refreshControl属性,所以第一步判断当前系统版本。
  2. 初始化刷新控件。UIKit会自动设置frame,不需要手动设定。
  3. 3.1 配置刷新控件,可以通过tintColor设置进度滚轮指示器颜色,通过attributedTitle添加刷新时显示的提示文字。3.2 添加响应事件,当UIControlEventValueChanged事件发生时指定响应的动作。
  4. 把上面创建、配置的refreshControl赋值给scrollViewrefreshControl属性

现在实现动作方法。

 - (void)refresh:(UIRefreshControl *)sender
{
//做相关刷新处理 // 停止刷新
[sender endRefreshing];
}

转自:https://github.com/pro648/tips/wiki/%E5%9C%A8UIScrollView%E3%80%81UICollectionView%E5%92%8CUITableView%E4%B8%AD%E6%B7%BB%E5%8A%A0UIRefreshControl%E5%AE%9E%E7%8E%B0%E4%B8%8B%E6%8B%89%E5%88%B7%E6%96%B0

在UIScrollView、UICollectionView和UITableView中添加UIRefreshControl实现下拉刷新的更多相关文章

  1. 使用系统自带的 UIRefreshControl 实现下拉刷新

    UIRefreshControl 为 UITableViewController 中的一个属性,从以下可以看出, IOS6.0 以上才支持. @property (nonatomic,retain) ...

  2. 在微信小程序中,如何实现下拉刷新(模拟刷新)

    一.在app.json中启动刷新, 在Windows 中, 添加  "enablePullDownRefresh":"true" 二.在需要刷新的页面中写(若是 ...

  3. Android中实现下拉刷新

    需求:项目中的消息列表界面要求实现类似sina微博的下拉刷新: 思路:一般的消息列表为ListView类型,将list加载到adapter中,再将adapter加载到 ListView中,从而实现消息 ...

  4. UIScrollView,UICollectionView 和UITableView的属性和方法

    UIScrollView,UICollectionView 和UITableView 三者之间的关系:UIScrollView是 UICollectionView 和 UITableView 的父类. ...

  5. ios中uitableview上拉刷新和下拉刷新(1)

    在一个项目开发过程中为了更好的体验经常会用到下拉刷新更新数据,当然也伴随一些上拉加载更多数据的情况:当前比较火的EGOTableViewPullRefresh只实现了下拉功能,而没有上拉的功能.这里介 ...

  6. UITableView:下拉刷新和上拉加载更多

    [转载请注明出处] 本文将说明让UIScrollView支持"下拉刷新"和"上拉加载更多"的实现机制,并实现一个可用的tableView子类,以下主要以&quo ...

  7. IOS学习之路十二(UITableView下拉刷新页面)

    今天做了一个下拉刷新的demo,主要用到了实现的开源框架是:https://github.com/enormego/EGOTableViewPullRefresh 运行结果如下: 实现很简单下载源代码 ...

  8. iOS开发-UIRefreshControl下拉刷新

    下拉刷新一直都是第三库的天下,有的第三库甚至支持上下左右刷新,UIRefreshControl是iOS6之后支持的一个刷新控件,不过由于功能单一,样式不能自定义,因此不能满足大众的需求,用法比较简单在 ...

  9. iOS:下拉刷新控件UIRefreshControl的详解

    下拉刷新控件:UIRefreshControl 1.具体类信息: @interface UIRefreshControl : UIControl //继承控制类 - (instancetype)ini ...

随机推荐

  1. LeetCode.1029-两城调度(Two City Scheduling)

    这是小川的第383次更新,第412篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第245题(顺位题号是1029).公司计划采访的人数为2N.将第i个人飞往城市A的费用是[ ...

  2. Android自动化测试(UiAutomator)

    一.一个BUG引发的问题   如果研发过程中有一个BUG:“不断的切换手机语言出现花屏现象”.这个问题我们如何验证呢?我想,最好的方式应该是自动化测试.    那么,自动化测试可以完成哪些任务呢?  ...

  3. 2019JAVA第九次实验报告

    Java实验报告 班级 计科二班 学号 20188442 姓名 吴怡君 完成时间 2019.11.8 评分等级 课程总结 1.实验代码 package Domon8; import java.awt. ...

  4. Python 入门之 软件开发规范

    Python 入门之 软件开发规范 1.软件开发规范 -- 分文件 (1)为什么使用软件开发规范: 当几百行--大几万行代码存在于一个py文件中时存在的问题: 不便于管理 修改 可读性差 加载速度慢 ...

  5. jstl用法 简介

    <c:choose> <c:when test="${salary <= 0}"> 太惨了. </c:when> <c:when t ...

  6. httpClient4.5.2工具类总结

    使用背景: 因项目使用非结构化存储,http相关jar包统一升级到httpClient4.5.2,查阅相关文档总结如下,以咨分享,望不吝指教. 依赖jar包 httpclient-4.5.2.jar. ...

  7. css阴影——box-shadow

    1.语法 box-shadow: h-shadow v-shadow blur spread color inset;      box-shadow: 水平阴影  垂直阴影 模糊距离 阴影大小 阴影 ...

  8. vue学习【二】vue结合axios动态引用echarts

    大家好,我是一叶,本篇是vue学习的第二篇,本篇将要讲述vue结合axios动态引用echarts. 在vue中,异步刷新使用的是axios,类似于大家常用的ajax,其实axios已经是vue的第二 ...

  9. Linux下部署springboot项目的步骤及过程

    最近在研究将springboot项目部署到Linux服务器上,由于springboot是内嵌了tomcat,所以可以直接将项目打包上传至服务器上.我是在idea上的项目,所以我就基于此说下过程. (一 ...

  10. redis常见问题和解决方案

    转载:https://www.cnblogs.com/aspirant/p/6820262.html [原创]那些年用过的Redis集群架构(含面试解析) redis常见问题和解决方案 持久化.主从问 ...