UITableView不同单元格的延迟动画

Posted

技术标签:

【中文标题】UITableView不同单元格的延迟动画【英文标题】:Delay animation of different cells of UITableView 【发布时间】:2017-06-19 16:50:20 【问题描述】:

我正在使用 swift 制作应用程序。 我有一个由 5 个不同行组成的 UITableView。 我在表格的每一行都有一个 UILabel 。 (此标签提供行的标题) 这个 UILabel 是动画的,所以它在每一行从左到右进入屏幕。

我的问题是,当我运行动画时,所有 5 个 UILabel 同时进入它们的行。我想在每个 UILabels 动画之间放置一个延迟。也就是我希望第一行的UILabel先进入屏幕,然后1秒后我希望第二行的UILabel进入屏幕,然后1秒后第三个UILabel ...等等。

    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell 

    let cell = tableView.dequeueReusableCellWithIdentifier("cell") as UITableViewCell!



    let imageView = cell.viewWithTag(1) as! UIImageView
    imageView.image = UIImage(named: imageArray[indexPath.row])

    let imageText = cell.viewWithTag(2) as! UILabel
    imageText.text = sectionName[indexPath.row]
    imageText.textAlignment = .Center



    //starting position for animation of imageText
    imageText.center.x = self.view.frame.width - 500


    //animating UILables comming into screen
    UIView.animateWithDuration(3, delay: 0.0, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [], animations: (

        imageText.center.x = ((self.view.frame.width) / 1)


    ), completion: nil)




    return cell


【问题讨论】:

【参考方案1】:

根据索引路径添加延迟。延迟中的 1 是您想要的动画之间的秒数。

let delay = 1 * indexPath.row
UIView.animateWithDuration(3, delay: delay, usingSpringWithDamping: 1, initialSpringVelocity: 1, options: [], animations: (
    imageText.center.x = ((self.view.frame.width) / 1)
), completion: nil)

我假设 5 行是表格视图需要显示的全部内容,并且所有内容都始终显示在屏幕上,这意味着,您无需考虑如何在行滚动时处理动画。如果滚动是一个考虑因素,那么这可能需要更改为仅在表格视图最初显示时进行动画处理。

【讨论】:

非常感谢。 如果考虑到滚动,那么是否可以在初始显示时运行延迟动画代码,然后在滚动开始后运行非延迟动画代码?

以上是关于UITableView不同单元格的延迟动画的主要内容,如果未能解决你的问题,请参考以下文章

为 UITableView 插入带有动画的行(并更新所有其他单元格)

带有静态单元格的 UITableView - 每个部分的分隔颜色不同?

UITableView 滚动时动画单元格

使用动画将uitableview单元格移动到顶部

UITableView ReloadData 动画单元格 UI

如何更改表格视图中单元格的删除动画持续时间? [复制]