5 objective-c uitableview reloaddata ios
我有一个UITableViewCell扩展并在点击时添加标签.
逻辑:
我
cellForRowAtIndexPath在所选单元格中添加了一个标签,然后didSelectRow...重新加载了tableView.在heightForRow...选定的单元格中展开.希望你能得到这张照片.
在didSelectRow...我必须reloadData,而不是开始/结束更新.我想要做的是reloadData并让它动画.我可以这样做:
[UIView transitionWithView: tableView
duration: 0.40f
options: UIViewAnimationOptionTransitionCrossDissolve
animations: ^(void)
{
[self.tableView reloadData];
}
completion: nil
}];
Run Code Online (Sandbox Code Playgroud)
这就是正在改变的细胞的交叉溶解.我想要的是UITableViewRowAnimationTop,但显然在转换选项中是不可能的.有没有办法reloadData和使用UITableViewRowAnimationTop?
一个更简单的解决方案,不需要CoreAnimation.
斯威夫特3:
UIView.transition(with: self.view,
duration: 0.15,
options: [.curveEaseInOut, .transitionCrossDissolve],
animations: {
self.tableView.reloadRows(at: self.tableView.indexPathsForVisibleRows!, with: .none)
}, completion: nil)
Run Code Online (Sandbox Code Playgroud)
[UITablewView reloadData:]不可动画.但是,您可能希望通过使用动画重新加载所有部分来尝试重新加载tableView.
NSIndexSet *sections = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, [tableView numberOfSections])];
[self.tableView reloadSections:sections withRowAnimation:UITableViewRowAnimationAutomatic];
Run Code Online (Sandbox Code Playgroud)
好的,我骗了.它可能是可动画的,但它需要很多关于QuartzCore Framework如何在UI组件上运行的知识.
@import QuartzCore;
Run Code Online (Sandbox Code Playgroud)
[self.tableView reloadData];
CATransition *transition = [CATransition animation];
transition.type = kCATransitionPush;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.fillMode = kCAFillModeForwards;
transition.duration = 0.6;
transition.subtype = kCATransitionFromTop;
[self.tableView.layer addAnimation:transition forKey:@"UITableViewReloadDataAnimationKey"];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12635 次 |
| 最近记录: |