如果用户滚动Swift,withRowAnimation效果会消失

时间:2015-09-05 23:14:33

标签: ios swift uitableview animation

我正面临关于insertRowsAtIndexPaths函数及其withRowAnimation参数的错误问题。

在堆栈社区的帮助下,我已经能够修改从快速淡入淡出到较长淡入淡出的效果(通过覆盖该功能),但如果我向上滚动表格视图,整个效果将完全消失,隐藏视图中的单元格再次向后滚动。

因为细胞被重复使用,所以效果完全没用。 我已尝试使用scrollToRowAtIndexPath函数(在这种情况下不起作用 - 它在单元格已经加载后启动,然后它向下滚动并且效果已经消失)以及将内容偏移设置为tableView.contentSize.height - 结果有点令人满意,但同样不能防止用户滚动时插入效果消失。
另外willDisplayCell不是一个选项,因为它每次用户滚动时动画单元格,我需要动画只运行一次。 Urrgh)

到目前为止,我已经没有关于如何防止此问题发生的想法。

更新
添加了蔗糖代码

class CustomTable: UITableView{

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

    self.endUpdates()
    self.beginUpdates()

    for indexPath:AnyObject in indexPaths{

        let cell:UITableViewCell? = (super.cellForRowAtIndexPath(indexPath as! NSIndexPath));
        if cell != nil {

            cell!.alpha = 0

            let animationBlock = { () -> Void in

                cell!.alpha = 1;
            }
            if UIView.respondsToSelector(Selector("animateWithDuration(duration: , delay: , usingSpringWithDamping dampingRatio: , initialSpringVelocity velocity: , options: , animations: , completion: ")){
                UIView.animateWithDuration(3, delay: 3.0, usingSpringWithDamping: 1.5, initialSpringVelocity: 0.0, options: UIViewAnimationOptions.TransitionCrossDissolve, animations: animationBlock, completion: nil)
            }else{
                UIView.animateWithDuration(3.3, delay: 5.0, options:UIViewAnimationOptions.TransitionCrossDissolve, animations: animationBlock, completion: nil)
            }

        }     

    }

}

}

0 个答案:

没有答案