UIRefreshControl跳转和闪烁问题

时间:2018-06-28 09:01:37

标签: objective-c uirefreshcontrol

我有一个UITableViewController和内置的UIRefreshControl。我要修复的刷新动画有两个问题。

  1. 当我拖放表格视图时,它开始更新服务器中的数据。如果用户一直拖动它,则会发生明显的偏移跳跃。

  2. 刷新操作结束时,表格视图将隐藏动画刷新控件。隐藏完它后,控件会闪烁几帧。

Showcase

该控件是从UIStoryboard设置的。我从那里设置目标并设置颜色。当动作触发时,我的代码刷新了我们服务器中的数据,服务器响应时该服务器具有回调。我从那里停止刷新控件:

dispatch_async(dispatch_get_main_queue(), ^{
   [self.refreshControl endRefreshing];
});
...
[self.tableView reloadData];

我做错了什么吗?还是UIRefreshControl只是iOS 11中的越野车?

1 个答案:

答案 0 :(得分:2)

此时UIRefreshControl有点神秘(它受许多因素的影响-您是否使用大标题,是否将refreshControl设置在viewDidLoad或其他位置,等等。 )

摆脱这些问题的最佳方法是停止观察valueChanged中的UIRefreshControl,并确定没有拖动后再执行reloadData / endRefreshing (例如scrollViewDidEndDragging)。

我还可以通过这种方式从您的gif中复制UIRefreshControl活动指示器闪烁 (并且仅适用于没有导航栏半透明性的类似iPhone X的设备)< / strong>:

edgesForExtendedLayout = [.top]
extendedLayoutIncludesOpaqueBars = true

然后我要做的就是更改edgesForExtendedLayoutextendedLayoutIncludesOpaqueBars