UIRefreshControl并不是新的控件,iOS10 中只不过是给UIScrollView添加了刷新refreshControl这个属性。
iOS 10 以后只要是继承UIScrollView那么就支持刷新功能:做了个简单测试代码如下
#define WIDTH [[UIScreen mainScreen] bounds].size.width
#define HEIGHT [[UIScreen mainScreen] bounds].size.height
@interfaceViewController ()<UIScrollViewDelegate>
@property (nonatomic,strong)UIScrollView *scrollView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0,0,WIDTH,HEIGHT)];
//滚动视图的代理
self.scrollView.delegate =self;
self.scrollView.backgroundColor = [UIColor yellowColor];
//只要创建出UIRefreshControl即可。
self.scrollView.refreshControl = [[UIRefreshControl alloc]init];
//frame 没发现起作用
// self.scrollView.refreshControl.frame = CGRectMake(0, 0, 0, 0);
//前景色:菊花转的颜色
self.scrollView.refreshControl.tintColor = [UIColor cyanColor];
//添加标题
self.scrollView.refreshControl.attributedTitle = [[NSAttributedString alloc]initWithString:@"下拉刷新"];
//背景色:刷新控制器的背景
self.scrollView.refreshControl.backgroundColor = [UIColor whiteColor];
// 添加刷新方法
[self.scrollView.refreshControl addTarget:self action:@selector(downloadData) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:self.scrollView];
//设置为NO刷新控制器失效
self.scrollView.bounces =YES;
}
#pragma mark - 在这里实现下拉数据的加载
- (void)downloadData{
NSLog(@"加载新数据");
}
#pragma mark - UIRefreshControl的开始刷新的方法
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView{
NSLog(@"即将开始拖拽");
}
- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView{
NSLog(@"即将开始减速");
}
#pragma mark - UIRefreshControl的停止刷新的方法
#if 1 //停止下拉后,延迟1s左右完成减速后停止刷新
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView{
[self.scrollView.refreshControl endRefreshing];
}
#else
#if 1 //停止下拉拖拽后立即停止刷新
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate{
[self.scrollView.refreshControl endRefreshing];
}
#endif
#endif
@end