我正在使用insertRowAtIndexPath函数在tableview中插入一系列行。
但是,内置动画样式(.Fade, .Top, .Bottom e.t.c.)不能完全满足我的需求。
我需要创建自己的自定义动画,我知道可以通过重写UITableViewRowAnimation来完成,但是我不确定应该如何处理。

期待您的建议。

赞赏任何见解。

最佳答案

在您的UITableView子类中尝试使用此方法。

override func insertRowsAtIndexPaths(indexPaths: [NSIndexPath], withRowAnimation animation: UITableViewRowAnimation) {
    super.insertRowsAtIndexPaths(indexPaths, withRowAnimation: UITableViewRowAnimation.None)

    self.endUpdates()
    self.beginUpdates()

    for indexPath:NSIndexPath in indexPaths {

        let cell:UITableViewCell? = (super.cellForRowAtIndexPath(indexPath))

        if cell != nil {
            var frame:CGRect = (cell?.frame)!
            frame.origin.x = (cell?.frame.size.width)!
            cell?.frame = frame
            frame.origin.x = 0

            let animationBlock = { () -> Void in
                cell!.frame = frame;
            }

            if UIView.respondsToSelector(Selector("animateWithDuration(duration: , delay: , usingSpringWithDamping dampingRatio: , initialSpringVelocity velocity: , options: , animations: , completion: ")) {
                // UIView.animateWithDuration(0.3, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.0, options:0.0, animations: animationBlock, completion:nil)
                UIView.animateWithDuration(0.3, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.0, options: UIViewAnimationOptions.CurveEaseInOut, animations: animationBlock, completion: nil)
            } else {
                UIView.animateWithDuration(0.3, delay: 0.0, options:UIViewAnimationOptions.CurveEaseIn, animations: animationBlock, completion: nil)
            }
        }
    }
}

关于ios - 覆盖withRowAnimation样式以在Swift中插入行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32394069/

10-12 03:20