我有一个UITableViewController
和内置的UIRefreshControl
。我要修复的刷新动画有两个问题。
当我拖放表格视图时,它开始更新服务器中的数据。如果用户一直拖动它,则会发生明显的偏移跳跃。
刷新操作结束时,表格视图将隐藏动画刷新控件。隐藏完它后,控件会闪烁几帧。
该控件是从UIStoryboard设置的。我从那里设置目标并设置颜色。当动作触发时,我的代码刷新了我们服务器中的数据,服务器响应时该服务器具有回调。我从那里停止刷新控件:
dispatch_async(dispatch_get_main_queue(), ^{
[self.refreshControl endRefreshing];
});
...
[self.tableView reloadData];
我做错了什么吗?还是UIRefreshControl
只是iOS 11中的越野车?
答案 0 :(得分:2)
此时UIRefreshControl
有点神秘(它受许多因素的影响-您是否使用大标题,是否将refreshControl
设置在viewDidLoad
或其他位置,等等。 )
摆脱这些问题的最佳方法是停止观察valueChanged
中的UIRefreshControl
,并确定没有拖动后再执行reloadData
/ endRefreshing
(例如scrollViewDidEndDragging
)。
我还可以通过这种方式从您的gif中复制UIRefreshControl
的活动指示器闪烁 (并且仅适用于没有导航栏半透明性的类似iPhone X的设备)< / strong>:
edgesForExtendedLayout = [.top]
extendedLayoutIncludesOpaqueBars = true
然后我要做的就是更改edgesForExtendedLayout
和extendedLayoutIncludesOpaqueBars
。