目前我正在使用一个类来处理这个方法。
class TipInCellAnimator {
// placeholder for things to come -- only fades in for now
class func animate(cell:UITableViewCell) {
let view = cell.contentView
view.layer.opacity = 0.1
UIView.animateWithDuration(0.1) {
view.layer.opacity = 1
}
}
}
在我的主viewcontroller中调用它,如下所示
override func tableView(tableView: UITableView, willDisplayCell cell: UITableViewCell,
forRowAtIndexPath indexPath: NSIndexPath) {
TipInCellAnimator.animate(cell)
}
我遇到的问题是,当项目重新加载时,单元格会闪烁,并且随着它逐渐消失,我无法点击屏幕来停止滚动。
有没有人对如何解决这些问题或实现相同效果的其他方法有一些建议?
最佳答案
通过查看您的代码,最明显的原因是“闪烁”的单元格是因为您的动画持续时间。尝试将持续时间从0.1增加到0.5
对于第二个问题,iOS默认情况下在其视图设置动画时忽略用户交互。若要启用此选项,请将UIViewAnimationOptions中的选项设置为“AllowUserInteraction”。
请参考以下Swift 1.2代码
class func animate(cell:UITableViewCell) {
let view = cell.contentView
view.layer.opacity = 0.1
UIView.animateWithDuration(0.5, delay: 0, options: .AllowUserInteraction | .CurveEaseInOut, animations: { () -> Void in
view.layer.opacity = 1
}, completion: nil)
}
或Swift 2.0
class func animate(cell:UITableViewCell) {
let view = cell.contentView
view.layer.opacity = 0.1
UIView.animateWithDuration(0.5, delay: 0, options: [.AllowUserInteraction, .CurveEaseInOut], animations: { () -> Void in
view.layer.opacity = 1
}, completion: nil)
}