当我调用 self.refreshControl.endRefreshing()
时,它会像应该的那样将tableView弹回到原来的位置。我该如何使它在 endRefreshing()
上流畅地返回到原来的位置?
当我调用 self.refreshControl.endRefreshing()
时,它会像应该的那样将tableView弹回到原来的位置。我该如何使它在 endRefreshing()
上流畅地返回到原来的位置?
试一下这个
[CATransaction begin];
[CATransaction setCompletionBlock:^{
// reload tableView after refresh control finish refresh animation
[self.tableView reloadData];
}];
[self.refreshControl endRefreshing];
[CATransaction commit];
如果你遇到了这个问题,你必须在重新加载表格数据之前调用endRefreshing
方法。否则,在表格更新时,它将覆盖刷新器并导致其看起来不正常。
// stop refreshing
[self.refreshControl endRefreshing];
// update tableview
[self.tableview performSelector:@selector(reloadData) withObject:nil afterDelay:.3];
endRefreshing()
,文档说明如下:
我将调用包装在UIView动画块中,过渡变得平滑起来。如果启用了动画,则使用动画隐藏控件。
UIView.animateWithDuration(0.5) {
self.refreshControl.endRefreshing()
}
这对我来说在Swift 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)
}
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,但事实上是反过来对我起作用。
附加信息:此代码在location:didChange:委托中执行,而不是在viewDidLoad或viewWillAppear中。 浏览其他线程时,似乎在尝试同时结束刷新和显示弹出窗口时,Apple SDK存在问题。