UIRefreshController结束动画问题
当我打电话给self.refreshControl.endRefreshing()
时,它将tableView恢复到它原来的位置。我应该如何进行动画制作,以便流畅地返回到原来的位置endRefreshing()
?UIRefreshController结束动画问题
对于有此问题的任何人,在重新加载表数据之前,您必须调用您的endRefreshing
方法。否则,当表更新它将覆盖刷新,并导致它看起来越野车。
“endRefreshing”刷新完成时必须显式调用 – alexmorhun 2017-02-23 16:52:10
// stop refreshing
[self.refreshControl endRefreshing];
// update tableview
[self.tableview performSelector:@selector(reloadData) withObject:nil afterDelay:.3];
试试这个
[CATransaction begin];
[CATransaction setCompletionBlock:^{
// reload tableView after refresh control finish refresh animation
[self.tableView reloadData];
}];
[self.refreshControl endRefreshing];
[CATransaction commit];
这对我的作品与斯威夫特2
if self.refreshControl.refreshing {
self.refreshControl.endRefreshing()
}
GlobalHelper.setTimeout(0.1, block: {
self.tableView.reloadData()
})
,这是我的超时功能:
static func setTimeout(delay:NSTimeInterval, block:()->Void) -> NSTimer {
return NSTimer.scheduledTimerWithTimeInterval(delay, target: NSBlockOperation(block: block), selector: #selector(NSOperation.main), userInfo: nil, repeats: false)
}
我也遇到过这个问题。对于endRefreshing()
文档状态:
如果还启用了动画,则使用动画隐藏控件。
我包裹在一个UIView动画块呼叫和过渡变得平滑:
UIView.animateWithDuration(0.5) {
self.refreshControl.endRefreshing()
}
在夫特3的iOS 10,我得到了类似的方法作为ibrahimyilmaz和这里是:
self.refreshControl.endRefreshing()
//Need to dispatch the alertView, otherwise, RefreshControl.endRefreshing() doesn't work.
let when = DispatchTime.now() + 1
DispatchQueue.main.asyncAfter(deadline: when) { [weak self] in
self?.showSettingAlertView()
}
起初,我是在调度endRefreshing的建议,在许多线程中,但实际上这是另一种方式对我来说很有用。
附加信息:此代码在位置:didChange:delegate中执行,而不是在viewDidLoad或viewWillAppear中执行。 通过其他线程,当您尝试结束刷新并尝试同时显示弹出窗口时,似乎Apple Apple中存在问题。
我有这个问题和独特的解决方案,我发现是调用reloadData有延误,endRefreshing后。 [self.tableView performSelector:@selector(reloadData)withObject:self.tableView afterDelay:0.2]; – juannn91 2014-12-28 00:49:35
@ user1715438非常感谢。 – uhfocuz 2014-12-28 01:45:49
@ user1715438,我也是,afterDelay适合我,这是唯一的解决方案。 – gabbler 2015-02-15 13:04:59