【问题标题】:UIRefreshControl flicker in iOS7iOS7中的UIRefreshControl闪烁
【发布时间】:2026-01-08 02:45:01
【问题描述】:

如果 UIRefreshControl 以编程方式启动,(beginRefreshing 然后 endRefreshing )当它不可见时,那么在下次手动刷新时 UIRefreshControl 动画中会持续闪烁。

在 UITableViewController 子类中添加这个方法并在 2 秒后拉动刷新,你会看到闪烁

-(void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    UIRefreshControl * refreshControl = [[UIRefreshControl alloc] init];

    self.refreshControl = refreshControl;

    [self.refreshControl beginRefreshing];

    double delayInSeconds = 2.0;
    dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 
    (int64_t)(delayInSeconds * NSEC_PER_SEC));
    dispatch_after(popTime, dispatch_get_main_queue(), ^(void){

        [self.refreshControl endRefreshing];
    });
}

如何避免这种闪烁?

【问题讨论】:

  • 我认为这是一个错误。几天前我遇到了同样的行为
  • 查看邮件应用程序(至少在 iPad 上),如果您开始更新然后再次拉动,刷新控件也会在那里闪烁。

标签: ios ios7 uitableview flicker uirefreshcontrol


【解决方案1】:

将您的代码放在 viewDidLoad 或 viewWillAppear 中,而不是 viewDidAppear。

另外,你能告诉我将代码放在 viewDidAppear 方法中,而不是 viewDidLoad 或 viewWillAppear 的原因吗?

【讨论】:

  • 没有具体原因,我是在一个示例应用程序中尝试的。即使在 viewWillAppear 中也会出现这种闪烁!