iOS 7 UIRefreshControl tintColor not working for beginRefreshing iOS 7 UIRefreshControl tintColor not working for beginRefreshing xcode xcode

iOS 7 UIRefreshControl tintColor not working for beginRefreshing


Hey just stumbled into this exact issue.

Interestingly I fixed my code by setting the contentOffset first then calling beginRefreshing

if(self.tableView.contentOffset.y == 0){    self.tableView.contentOffset = CGPointMake(0, -self.refreshControl.frame.size.height);    [self.refreshControl beginRefreshing];}

You may want to animate this process:

[UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^(void){    self.tableView.contentOffset = CGPointMake(0, -self.refreshControl.frame.size.height);} completion:^(BOOL finished) {    [self.refreshControl beginRefreshing];}];

Hope this helps you.

W


SWIFT SOLUTION !Insert the following code in the viewDidLoad:

self.refreshControl.tintColor = UIColor.orangeColor()self.tableView.contentOffset = CGPointMake(0, -self.refreshControl.frame.size.height)self.refreshControl.beginRefreshing()

Swift 3.1

self.refreshControl.tintColor = UIColor.orangeself.tableView.contentOffset = CGPoint(x:0, y:-self.refreshControl.frame.size.height)self.refreshControl.beginRefreshing()


@william-george's answer set me in the right direction, but was giving me weird autolayout animation issues.

So here's the version that worked for me:

- (void)programaticallyRefresh {    // Hack necessary to keep UIRefreshControl's tintColor    [self.scrollView setContentOffset:CGPointMake(0, -1.0f) animated:NO];    [self.scrollView setContentOffset:CGPointMake(0, -self.refreshControl.frame.size.height) animated:YES];    [self.refreshControl beginRefreshing];    [self refresh];}

-refresh is the method tied to the UIRefreshControl.