如何为 UITableViewCell 设置动画
Posted
技术标签:
【中文标题】如何为 UITableViewCell 设置动画【英文标题】:How to animate a UITableViewCell 【发布时间】:2018-05-11 02:13:30 【问题描述】:我有一个 UITableViewCell。当单元格进入视野时,我正在尝试为进度条设置动画。我尝试了以下方法,但它什么也没做。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *cellId = @"TableViewCellResult";
TableViewCellResults *cell = [tableView dequeueReusableCellWithIdentifier:cellId];
if (cell == nil)
cell = [[TableViewCellResults alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:cellId];
// Add progress bar here
// THIS DOES NOTHING
[UIView animateWithDuration:10.f animations:^
progressBar.value = 55.f;
];
如何为 UIProgressBar 设置动画? UIProgressBar 不接受“animateWithDuration”。
我有在 UIView(不是单元格)中为 UIProgressBar 设置动画的工作示例 使用相同的语法。
【问题讨论】:
进度条是否包含在单元格中? 您遗漏了重要的代码。展示你完整的cellForRowAtIndexPath
方法。
尝试将动画代码放入- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath;
或- (void)tableView:(UITableView *)tableView didEndDisplayingCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath*)indexPath
是的.. 单元格中的进度条。
无法粘贴完整的 cellForRowAt - 字符过多
【参考方案1】:
尝试使用 UIView.commmitAnimations() 执行动画,例如:
UIView.beginAnimations(“rotation”, context: nil)
UIView.setAnimationDuration(0.8)
cell.layer.transform = CATransform3DIdentity
cell.alpha = 1
cell.layer.shadowOffset = CGSize(width: CGFloat(0), height: CGFloat(0))
UIView.commitAnimations()
也尝试执行willDisplayCell:方法里面的操作。
参考这个http://www.thinkandbuild.it/animating-uitableview-cells/解决方案在tableview单元格内执行动画
【讨论】:
以上是关于如何为 UITableViewCell 设置动画的主要内容,如果未能解决你的问题,请参考以下文章