我正在尝试在初始加载时为表视图单元设置动画。动画适用于所有单元格,除了表格底部最后一个拒绝动画的单元格。
这是因为UITableView.visibleCells
最后没有返回此单元格。 (它返回单元格0-12,最后一个单元格位于索引13并且清晰可见)
这是代码。我能做些什么来确保所有单元格都有动画效果吗?
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
tableView.reloadData()
let cells = tableView.visibleCells
let tableHeight: CGFloat = clubsTable.bounds.size.height
for i in cells {
let cell: UITableViewCell = i as UITableViewCell
cell.transform = CGAffineTransformMakeTranslation(0, tableHeight)
}
var index = 0
for a in cells {
let cell: UITableViewCell = a as UITableViewCell
UIView.animateWithDuration(1.5, delay: 0.05 * Double(index), usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: UIViewAnimationOptions.CurveEaseIn, animations: {
cell.transform = CGAffineTransformMakeTranslation(0, 0);
}, completion: { (complete) in
})
index += 1
}
}
答案 0 :(得分:3)
这是因为你的桌子的高度小于13个单元格的高度。因此它激活了12个细胞。你可以做的是使表高度在30px(或任何px,直到它包含13个单元格)更大,并在动画完成后,将tableView的高度更改回正常。
答案 1 :(得分:0)
致电let cells = tableView.visibleCells
之后,您只能执行类似
let indexPath = NSIndexPath(forRow: cells.count, inSection: 0)
cells.append(tableView.cellForRowAtIndexPath(indexPath))
关闭那些功能签名的内存,但你明白了。