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
.