UITableView.visibleCells没有捕获所有可见的单元格

时间:2016-07-19 15:03:41

标签: ios swift

我正在尝试在初始加载时为表视图单元设置动画。动画适用于所有单元格,除了表格底部最后一个拒绝动画的单元格。

这是因为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
    }
}

2 个答案:

答案 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))

关闭那些功能签名的内存,但你明白了。