如何为 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 设置动画的主要内容,如果未能解决你的问题,请参考以下文章

如何为 UITableViewCell 实现抖动动画

如何为 UITableViewCell 的 ImageView 设置固定大小?

如何为 CAShapeLayer 路径和填充颜色设置动画

如何为剪切路径设置动画

如何为 CAGradientLayer 色点设置动画?

如何为所有精灵图像设置动画?