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 - 每个部分的分隔颜色不同?