gpt4 book ai didi

ios - PrepareForReuse() 重置 UIView 宽度不起作用

转载 作者:行者123 更新时间:2023-11-28 05:55:30 24 4
gpt4 key购买 nike

我现在被困在这个问题上有一段时间了,虽然我认为我知道问题出在哪里,但我仍然无法解决它。我正在使用 tableView,每个单元格都有倒计时条动画。每个单元格都有一个由用户设置的自定义持续时间。然后随着时间的流逝,一个条形动画滑动。

我正在使用 CADisplayLink 来运行这个动画,这段代码是在 Controller 文件中编写的,我只是随着时间的推移改变 UIView 的宽度:

@objc func handleProgressAnimation() {
let currenttime = Date()
let elapsed = currenttime.timeIntervalSince(animationStartDate)
let totalWidth: Double = 400.0
print(elapsed)
let arrayLength = durationBar.count
var i: Int = 0



for _ in 0..<arrayLength {
let indexPath = IndexPath(row: i, section: 0)
let percentage = (elapsed / Double(durationBar[i].durationTime))
let newWidth = Double(totalWidth - (totalWidth * percentage))
durationBar[i].width = newWidth
if (percentage < 1)
{
if let cell = listTableView.cellForRow(at: indexPath) as! listTableViewCell? {
cell.timeRemainingView.frame.size.width = CGFloat(durationBar[indexPath.row].width)
}
}
else {
if let cell = listTableView.cellForRow(at: indexPath) as! listTableViewCell? {
cell.timeRemainingView.frame.size.width = 400
cell.timeRemainingView.isHidden = true
}
}
i = i + 1
}

}

当所有的条都在减少时,一切都很好,但是当其中一个单元格时间完成时,UIView 宽度变为零,然后随着用户滚动,该单元格被重用,这会从其他单元格中消失进度条还是时间。

我正在使用 prepareforsegue() 方法将栏的宽度重置为 400(默认值),但这似乎不起作用。

这是cellforRow代码:

 func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellid, for: indexPath) as! listTableViewCell
cell.testlabel.text = "\(duration[indexPath.row].durationTime)"
cell.timeRemainingView.frame.size.width = CGFloat(durationBar[indexPath.row].width)

return cell

}

这是PrepareForReuse()

 override func prepareForReuse() {
super.prepareForReuse()
self.timeRemainingView.frame.size.width = 400
self.timeRemainingView.isHidden = false
}

enter image description here

这是截图。您可以在某些单元格中看到时间已到,但在其他单元格中还有剩余时间,但进度条已消失。

最佳答案

您必须重新设置框架。 宽度 是一个只获取 的属性。

关于ios - PrepareForReuse() 重置 UIView 宽度不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51602360/

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