gpt4 book ai didi

swift - 如何向 UITableView 单元格添加视差效果

转载 作者:行者123 更新时间:2023-11-30 11:42:43 26 4
gpt4 key购买 nike

您好,我正在创建一种社交媒体应用程序,我使用表格 View 来显示所有信息,我制作了视差效果,起初它运行良好且流畅,但在移动我的设备几次后它吃晚饭变得紧张不安,而且速度很快

这是我创建的扩展,我要添加到我的 TableViewCellView 中:(我这样调用它:myCell.addParallax(magnitude: 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)
}
}

最佳答案

当用户滚动表格时,您的 UITableViewCell 会被重用。在 cellForRow atIndexPath 方法中,您最有可能使用 tableView.dequeueReusableCell 方法。此方法不会始终创建新单元格,而是重用不再可见的单元格。

每次调用 myCell.addParallax(magnitude: 10) 时,您创建的 UIMotionEffectGroup 都会添加到 UITableViewCell 中。最后,您有许多 UIMotionEffectGroup 这是问题的根源。确保每个单元格仅调用此方法一次,您可以在单元格本身中使用 awakeFromNib 方法来实现此目的。

关于swift - 如何向 UITableView 单元格添加视差效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49164556/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com