你好我正在创建一种社交媒体应用程序,我正在使用表格视图来显示所有信息,我已经做了视差效果,起初它工作得非常顺利,但经过几次移动我的设备它成为晚餐紧张和快速的方式
这是我创建的扩展,我将添加到我的TableViewCellView :(我称之为:myCell.addParallax(幅度:10))
extension UIView {
func addParallax(magnitude: Float) {
let xMotion = UIInterpolatingMotionEffect(keyPath: "center.x", type: .tiltAlongHorizontalAxis)
xMotion.maximumRelativeValue = magnitude
xMotion.minimumRelativeValue = -magnitude
let yMotion = UIInterpolatingMotionEffect(keyPath: "center.y", type: .tiltAlongVerticalAxis)
yMotion.maximumRelativeValue = magnitude
yMotion.minimumRelativeValue = -magnitude
let motionEffect = UIMotionEffectGroup()
motionEffect.motionEffects = [xMotion, yMotion]
self.addMotionEffect(motionEffect)
}
}
答案 0 :(得分:0)
当用户滚动表格时,您的UITableViewCell
被重复使用。在cellForRow atIndexPath
方法中,您最有可能使用tableView.dequeueReusableCell
方法。此方法不会一直创建新单元格,它会重用那些不再可见的单元格。
每次调用UIMotionEffectGroup
时,您创建的UITableViewCell
都会添加到myCell.addParallax(magnitude: 10)
。最后,你有很多UIMotionEffectGroup
这是问题的根源。确保每个单元格只调用一次此方法,您可以在单元格中使用awakeFromNib
方法来实现此目的。