gpt4 book ai didi

ios - X 单元格后 UITableViewCells 停止正确显示

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:06:06 24 4
gpt4 key购买 nike

swift 4 + Xcode 9。

几周来我一直在研究这个问题,试图自己解决它。如果有人能提供任何帮助,我将不胜感激。我没有在最初的问题中发布任何代码,因为它是专有的。如果需要它来帮助解决我的问题,我很乐意提供它的一部分。

我有一个带有自定义单元格的 UITableView,其中包含非常复杂的 subview 布局,其中一些被隐藏或显示(使用 1000-priority cellForRowAt 期间根据数据添加和删除的 height=0 约束。还有一个 ImageView,它应该始终是全宽,并且应该改变高度以匹配通过 Kingfisher.shared.retrieveImage() 加载的图像。获得图像后,我会更新该单元格图像上的 aspectRatio 约束,然后显示单元格。这对前 15-20 个单元格非常有效,但当我滚动浏览更多行时,它就会停止运行。图像很小且居中,某些数据字段未更新等。如果我继续滚动,有时某个单元格会在这里或那里正确运行,但几乎所有单元格都不会。

现在是有趣的部分:如果我向上滚动 BACK UP,每个单元格都会自动重新格式化以使其看起来像它应该的那样,之后,每个单元格都是完美的。代码显然有效 - 我觉得这可能是平台中的一个错误,但在我假设之前,我想看看是否有其他人遇到过类似的事情。

再次非常感谢您提供的任何帮助 - 我非常渴望解决这个问题。

更新:为了回答几个问题,这里有一段代码是自定义单元类的一部分。这就是我设置单元格图像的方式(包括更新纵横比约束),以及我如何重置单元格以供重复使用。

internal var aspectConstraint : NSLayoutConstraint? {
didSet {
if oldValue != nil {
imageView.removeConstraint(oldValue!)
}
if aspectConstraint != nil {
imageView.addConstraint(aspectConstraint!)
}
}
}

override func prepareForReuse() {
super.prepareForReuse()
aspectConstraint = nil
imageView.image = nil
for view in subviews {
for c in view.constraints {
if c.firstAttribute == NSLayoutAttribute.height && c.constant == 0 {
view.removeConstraint(c)
}
}
}
}

func setCustomImage(image : UIImage) {
let aspect = image.size.width / image.size.height
let constraint = NSLayoutConstraint(item: imageView, attribute: NSLayoutAttribute.width, relatedBy: NSLayoutRelation.equal, toItem: imageView, attribute: NSLayoutAttribute.height, multiplier: aspect, constant: 0.0)
constraint.priority = UILayoutPriority(999)
aspectConstraint = constraint
imageView.image = image
}

最佳答案

对于任何遇到这个问题的人,由于完全没有解决这个问题,我得出的结论是 UIKit 不适合我的目的。我选择了Texture (以前称为 AsyncDisplayKit),我的进度又恢复了。

关于ios - X 单元格后 UITableViewCells 停止正确显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47366215/

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