重新加载表动画

时间:2011-12-26 13:36:09

标签: ios uitableview core-animation

因此,当用户点击我的表格中的单元格时,我实际上没有推送到新的视图控制器,我只是重新加载该tableView中的数据。

但是,我希望得到一个效果,就像我推动一个新的视图控制器一样。

有人知道如何将旧内容从屏幕上的旧内容中删除,将新内容放到屏幕上以获取整个表格吗?

2 个答案:

答案 0 :(得分:13)

根据您拥有的部分数量,您可以使用- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation

所以你可以这样做:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
    [tableView deselectRowAtIndexPath:indexPath animated:YES];
    [tableView reloadSections:[NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0,[self numberOfSectionsInTableView])] withRowAnimation:UITableViewRowAnimationRight];
}

答案 1 :(得分:0)

简单动画

    func animateTable() {
    self.reloadData()

    let cells = self.visibleCells
    let tableHeight: CGFloat = self.bounds.size.height

    for i in cells {
        let cell: UITableViewCell = i as UITableViewCell
        cell.transform = CGAffineTransform(translationX: 0, y: tableHeight)
    }

    var index = 0

    for a in cells {
        let cell: UITableViewCell = a as UITableViewCell

        UIView.animate(withDuration: 1.5, delay: 0.05 * Double(index), usingSpringWithDamping: 0.8, initialSpringVelocity: 0, options: UIViewAnimationOptions.curveLinear, animations: {
            cell.transform = CGAffineTransform.identity
        }, completion: nil)

        index += 1
    }
}