为 uitableviewcell 内的视图设置动画

Posted

技术标签:

【中文标题】为 uitableviewcell 内的视图设置动画【英文标题】:Animating a view inside a uitableviewcell 【发布时间】:2013-02-11 21:58:44 【问题描述】:

我有嵌套的表格视图,因此我可以在每个表格视图的单元格中都有一个横向滚动的表格视图。我想在第一行添加一个动画,基本上来回移动一个视图。它正在工作,有点:

    - (UITableViewCell *)tableView:(UITableView *)tableView willDisplayCell: (BannerCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

    if (indexPath.row == 0)
        [UIView animateWithDuration:3
                         animations:^
                             [UIView setAnimationRepeatCount: 100];
                             cell.handView.frame = CGRectMake(cell.handView.frame.origin.x-100, cell.handView.frame.origin.y, 32, 32);
                             cell.handView.alpha = 0.0f;

                         
                         completion:^(BOOL finished)

                         ];
    
    else cell.handView.hidden = YES;

    return cell;


除了在第一次加载我的 tableview 时,我想要动画的视图甚至都没有显示,当我滚动到一个新单元格并返回到第一个单元格时,它会显示一个很好的动画。不知道为什么它在第一次加载时不能按预期运行。

【问题讨论】:

【参考方案1】:

这个委托方法真的被调用了吗?因为执行此操作的实际委托方法具有以下签名:

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath

您的方法返回一个UITableViewCell 对象。我好像没有找到这样的delgate方法。

【讨论】:

方法被调用。我换了你的方法,同样的问题。它确实有效,只是不是在第一次加载 tableview 时,我必须向下滚动并返回到第一个单元格。 并且该方法在视图加载时被调用,我也验证了它不是动画,而是完全删除视图 首先你应该使用我说的方法。它是 TableView 自动调用的 UiTableViewDelegate 方法。你不必打电话给这个。其次,因为您是在显示单元格之前制作动画,所以您不会第一次看到它。 我看到了,不幸的是我真正需要的是 didEndDisplayingCell 但它是一个 ios 6+ 的方法,不会削减它。感谢您的帮助。

以上是关于为 uitableviewcell 内的视图设置动画的主要内容,如果未能解决你的问题,请参考以下文章

如何添加约束以右对齐 UITableViewCell 内的图像

忽略UITableViewCell内的垂直滚动

uitableViewcell 内的 UIPickerView

UIStackView 内的 UIStackViews 给出错误

UITableViewCell 位置问题内的 UIView - 已更新

当我按下 uitableviewCell 内的信息按钮时添加模式视图控制器