我有一个内置UIRefreshControl的UITableViewController.我有两个问题,我想修复刷新动画.
>当我拖放表视图时,它开始从我们的服务器更新数据.如果用户继续拖动,则会发生明显的偏移跳跃.
>刷新操作结束时,表视图会隐藏刷新控件的动画.完成隐藏后,控件会闪烁几帧.
该控件是从UIStoryboard设置的.我从那里设置了目标和色调.当操作触发时,我的代码刷新来自我们服务器的数据,服务器在服务器响应时有回调.我从那里停止刷新控制:
dispatch_async(dispatch_get_main_queue(), ^{
[self.refreshControl endRefreshing];
});
...
[self.tableView reloadData];
我做错了什么或UIRefreshControl只是iOS 11中的错误?
最佳答案 我遇到了类似的问题,这就是我最终修复它的方式:
>需要设置“估计的行高”属性.否则,reloadData()会导致明显的跳转.这是解释here
>在用户仍在拖动时调用endRefreshing()也会导致明显的跳转.为了避免这种情况
>当我从服务器接收新数据时,我会检查用户是否仍在拖动(UIScrollView.isDragging).如果是这种情况,那么我不会立即调用endRefreshing(),而是设置一个标志.
>我覆盖scrollViewDidEndDragging并检查那里的标志;如果设置,那么我调用endRefreshing()并清除标志.