我正在使用此代码重新加载tableView部分 -
self.tableView.beginUpdates()
self.tableView.reloadSections(NSIndexSet(index: 1), withRowAnimation: UITableViewRowAnimation.None)
self.tableView.endUpdates()
Run Code Online (Sandbox Code Playgroud)
行替换仍然是动画的,表视图滚动到顶部.
如何确保不会将动画应用于重新加载部分+阻止表格视图滚动.
n13*_*n13 55
要防止滚动和动画,请执行以下操作:
UIView.performWithoutAnimation {
let loc = tableView.contentOffset
tableView.reloadRows(at: [indexPath], with: .none)
tableView.contentOffset = loc
}
Run Code Online (Sandbox Code Playgroud)
Ale*_*ano 41
斯威夫特4:
实际上,在滚动或展开/折叠单元格期间防止疯狂动画的最佳方法是:
UIView.performWithoutAnimation {
self.tableView.reloadRows(at: [indexPath], with: .none)
}
Run Code Online (Sandbox Code Playgroud)
Abh*_*nav 36
试试这个:
UIView.setAnimationsEnabled(false)
self.tableView.beginUpdates()
self.tableView.reloadSections(NSIndexSet(index: 1) as IndexSet, with: UITableViewRowAnimation.none)
self.tableView.endUpdates()
Run Code Online (Sandbox Code Playgroud)
小智 9
斯威夫特 5
UIView.performWithoutAnimation {
self.tableView.reloadRows(at: [indexPath], with: .none)
}
Run Code Online (Sandbox Code Playgroud)
小智 8
这两个答案都没有给我带来帮助.这是我找到的解决方案,希望它对某人有用
斯威夫特4:
let lastScrollOffset = tableView.contentOffset
tableView.beginUpdates()
tableView.reloadSections(IndexSet(integer: 1), with: .none)
tableView.endUpdates()
tableView.layer.removeAllAnimations()
tableView.setContentOffset(lastScrollOffset, animated: false)
Run Code Online (Sandbox Code Playgroud)
在viewDidLoad中的这个方法中再添加一行
self.tableView.remembersLastFocusedIndexPath = true
Run Code Online (Sandbox Code Playgroud)
将此代码添加到更新后要刷新的位置
UIView.setAnimationsEnabled(false)
self.tableView.beginUpdates()
self.tableView.reloadSections(NSIndexSet(index: 1) as IndexSet, with: UITableViewRowAnimation.none)
self.tableView.endUpdates()
Run Code Online (Sandbox Code Playgroud)
Objective-C:
[UIView setAnimationsEnabled:NO];
[[self tableView]beginUpdates];
[self.tableView reloadSections:[[NSIndexSet alloc] initWithIndex:1] withRowAnimation:UITableViewRowAnimationNone];
[[self tableView]endUpdates];
Run Code Online (Sandbox Code Playgroud)
但我认为下面的代码更有用、更好。
[UIView performWithoutAnimation:^{
[[self tableView]beginUpdates];
[self.tableView reloadSections:[[NSIndexSet alloc] initWithIndex:1] withRowAnimation:UITableViewRowAnimationNone];
[[self tableView]endUpdates];
}];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31346 次 |
| 最近记录: |