我正在尝试在UIRefreshControl(在iOS 7上构建)上设置tintColor。
我在 Storyboard 中启用了tableViewController的刷新,然后在ViewController viewDidLoad方法中执行了以下操作:

[self.refreshControl setTintColor:[UIColor redColor]];

所以现在,当我拉动刷新时,刷新控件的颜色确实是红色的:

我希望 View 显示时自动更新,所以我这样做了:
- (void)viewDidAppear:(BOOL)animated{
    [self.refreshControl beginRefreshing];
}

根据https://stackoverflow.com/a/16250679/1809736的说法,它没有显示出旋转的轮子。
[self.tableView setContentOffset:CGPointMake(0, -self.refreshControl.frame.size.height) animated:NO];

强制展示它。
它显示了它,但现在又恢复为默认颜色:

如果我尝试手动拉后刷新,它是红色的。

我尝试在iOS6上构建它,并且可以正常工作,所以这是一个iOS7错误吗?

附言:模拟器不是问题,我尝试在设备上进行构建,存在相同的错误。

P.P.S:我建立了一个示例项目,能否告诉我您是否有相同的错误或代码中是否存在问题?这里是链接:http://d.pr/f/pGrV

非常感谢 !

最佳答案

嘿,偶然发现了这个确切的问题。

有趣的是,我先设置contentOffset然后调用beginRefreshing来修复代码

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

您可能要动画化此过程:
[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];
}];

希望这对您有所帮助。

w ^

关于iphone - iOS 7 UIRefreshControl tintColor不适用于beginRefreshing,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19026351/

10-12 04:39