IOS6下拉刷新

IOS6SDK 中增加了一个类 

UIRefreshControl ,效果是下拉水滴 的,很拉轰,可惜的是,当前IOS6 市场占有率为66% ,也不能因为这个控件好用就不在乎那些不升级的用户的感受,所以,只能采用其他的方式去解决。

这个链接https://github.com/instructure/CKRefreshControl 的作者是 bjhomer


#import "PullTableViewController.h"

#import "CKRefreshControl.h"

@interface PullTableViewController ()


@end


@implementation PullTableViewController


- (id)initWithStyle:(UITableViewStyle)style

{

    self = [super initWithStyle:style];

    if (self) {

        // Custom initialization

    }

    return self;

}


- (void)viewDidLoad

{

    [super viewDidLoad];

    if([[UIDevice currentDevice].systemVersion floatValue] < 6.0){

        CKRefreshControl *refreshControl = [CKRefreshControl new];

        self.refreshControl=(id)refreshControl;

    }else{

        self.refreshControl=[[[UIRefreshControl alloc]init]autorelease];

    }

    self.refreshControl.tintColor = [UIColor orangeColor];

    NSLog(@"version is %f",[[UIDevice currentDevice].systemVersion floatValue]);

    self.refreshControl.attributedTitle=[[[NSAttributedString alloc]initWithString:@"下拉刷新"]autorelease];

    [self.refreshControl addTarget:self action:@selector(doRefresh:)forControlEvents:UIControlEventValueChanged];

    

}

-(void)doRefresh:(id)sender{

    //    if (self.refreshControl.refreshing) {

    NSLog(@"refreshing");

    self.refreshControl.attributedTitle = [[[NSAttributedString alloc]initWithString:@"刷新中"]autorelease];

    [self performSelector:@selector(endRefreshing) withObject:nil afterDelay:2];

    //    }

}

- (void) endRefreshing

{

    NSLog(@"refreshed");

    [self.refreshControl endRefreshing];

    self.refreshControl.attributedTitle = [[[NSAttributedString alloc]initWithString:@"下拉刷新"]autorelease];

    [self.tableView reloadData];

}


- (void)didReceiveMemoryWarning

{

    [super didReceiveMemoryWarning];

}


#pragma mark - Table view data source


- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView

{

    return 1;

}


- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return 20;

}


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath*)indexPath

{

    static NSString *CellIdentifier = @"Cell";

    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {

        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];

    }

    

    // Configure the cell...

    cell.textLabel.text=[NSString stringWithFormat:@"cell %d",indexPath.row];

    return cell;

}

@end

上面是我创建的一个tableview 里面增加了 SDK版本的判断,如果不是IOS6,那么这个也不会出错。


注:   CKRefreshControl 是ARC的,所以编译的时候要注意。

github上 给的实例 实际上包含一个静态库,如果不喜欢的话,可以直接把CKRefreshArrowView.h,CKRefreshArrowView.m 以及CKRefreshControl.h,CKRefreshControl.m copy 到项目中,并且导入 QuartzCore 即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值