iOS6から搭載されたUIRefreshControl(PullToRefresh)がかっこいい!

iOS6のメーラーを使っていると、PullToRefreshがプニョ〜っと伸びる感じが気持ちいいなーと思っていたら、UIRefreshControlという名前だった。

iOS6から搭載されたUIRefreshControl(PullToRefresh)がかっこいい!

サンプルコード

使い方はすごく簡単で、UITableViewControllerのrefreshプロパティかUIScrollViewにaddSubviewするかみたい。
今回はUIScrollViewのほうで書いてみました。

- (void)viewDidLoad {
    [super viewDidLoad];

    NSString *string = @"PullToRefresh";

    _refreshControl = [[UIRefreshControl alloc] init];
    [_refreshControl addTarget:self action:@selector(refresh:) forControlEvents:UIControlEventValueChanged];

    // 色
    NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
    [dictionary setObject:[UIColor whiteColor] forKey:NSForegroundColorAttributeName];
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:string attributes:dictionary];

    // Font
    [attributedString addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Helvetica-Bold" size:30.0f] range:NSMakeRange(0, string.length)];
    [attributedString addAttribute:NSStrokeColorAttributeName value:[UIColor redColor] range:NSMakeRange(0, string.length)];
    [attributedString addAttribute:NSStrokeWidthAttributeName value:[NSNumber numberWithFloat:3.0] range:NSMakeRange(0, string.length)];
    _refreshControl.attributedTitle = attributedString;

    [self.scrollView addSubview:_refreshControl];
    self.scrollView.contentSize = CGSizeMake(320, 2000);
}

リフレッシュが起動したときのタイミングでこのメソッドが呼ばれます。

- (void)refresh:(id)sender {
    [NSTimer scheduledTimerWithTimeInterval:1.f target:self selector:@selector(endRefresh) userInfo:nil repeats:NO];
}

んで、何かリクエストして、そのコールバックあたりで以下を呼び出せばいいのではないでしょうか。

- (void)endRefresh {
    [_refreshControl endRefreshing];
}

簡単ですね!

関連リンク

iPhoneプログラミングUIKit詳解リファレンス
所 友太
リックテレコム
売り上げランキング: 13490