首页 > 代码库 > [IOS]你用过原生的 UIRefreshControl 吗?

[IOS]你用过原生的 UIRefreshControl 吗?

第三方太过于强大,上拉刷新,下拉刷下,左边,右边,各种刷新,

先介绍几个第三方:

JHRefresh: https://github.com/Jiahai/JHRefresh

可以自定义动画的上、下拉刷新,Demo效果类似大众点评的动画效果,动画是帧动画实现的

那就自备图片组吧 ~ ~ ~

技术分享



MJRefresh: https://github.com/CoderMJLee/MJRefresh

用法比较简单,同时支持TableView、CollectionView:详情见 github 连接

 技术分享


AAPullToRefresh: https://github.com/r-plus/AAPullToRefresh

前面的上拉、下拉,这个可以左拉、右拉,好神奇的东西

技术分享


TMOTableView:  https://github.com/duowan/TMOTableView

当小伙伴们上拉刷新时,这个的特色是支持点击自动加载,是不是很

人性化。。。。。。  XXX  ~~

技术分享


当然还有历史久远的。。。貌似元老级的东西。。。

EGOTableViewPullRefresh:  https://github.com/enormego/EGOTableViewPullRefresh


说了强大的第三方后,原生的 UIRefreshControl 变消失与人际。。。

陌陌独自哭泣吧。。。。但是有时我们不要那么强大只要简单的下拉刷新呢。。。

就扯点 UIRefreshControl 的故事。。。

首先,它只能在TableView 下使用,而且你会在 UITableViewController 里发现

技术分享

具体的使用代码:

    self.refresh = [[UIRefreshControl alloc]init];
    NSLog(@"%.2f %.2f",self.refresh.frame.size.width,self.refresh.frame.size.height);
    self.refresh.tintColor = [UIColor blueColor];
    self.refresh.attributedTitle = [[NSAttributedString alloc]initWithString:@"下拉刷新"];;
    [self.refresh addTarget:self action:@selector(RefreshViewControlEventValueChanged) forControlEvents:UIControlEventValueChanged];
    [self.tableView addSubview:self.refresh];
<pre name="code" class="objc">- (void)RefreshViewControlEventValueChanged{
    NSLog(@"Refresh XXXX");
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
//        [loadingImageView removeFromSuperview];
        [self.refresh endRefreshing];
    });
}


跳到头文件会发现,里面的东西少的可怜,UIRefreshControl 的 frame 开始也是默认的,一般也是由它依赖的控制器或View

来控制,一般是UITableViewController 或TableView, 当下拉时会广播一个 UIControlEventValueChanged 通知

我们可以拿来搞的也就 这么多。。。。。

技术分享

我们可不可以自定义图片,实现类似果库的下拉动画

技术分享

发现一个可以加图片的办法,然后找到如下代码,但是系统的那个动画会在图片中间

    loadingImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed: @"loading"]];
    loadingImageView.center = CGPointMake(187.5, 40);
    [self.refresh insertSubview:loadingImageView atIndex:0];
    [self.refresh bringSubviewToFront:loadingImageView];


然后判断只能继承重写UIRefreshControl ,然后又变复杂了。。 。

差不多也该吃饭了。。。找到随后补上吧。。。 Y_Y  ~
   


[IOS]你用过原生的 UIRefreshControl 吗?