gpt4 book ai didi

ios - 使用 AutoLayout 从 UITableViewCell 中删除 subview

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

我有一个带有自定义 UITableViewCellUITableView。根据对象的属性显示/删除单元格中的某些 subview 。我正在使用自动布局和 xib。这是相关代码:

if (![some condition]) {
[self.descriptionLabel setText:descText];
} else {
[self.descriptionLabel removeFromSuperview];
}

这是细胞的粗略图

-----------------------------
topLabel

descriptionLabel

bottomLabel
-----------------------------

唯一可以删除的标签是描述标签。我有一个从 bottomLabeldescriptionLabel 的约束,另一个从 bottomLabeltopLabel 的优先级较低。当 descriptionLabel 被移除时,bottomLabel 正确地假定较低优先级约束。

问题出现在我认为是单元格重用的情况下,当我向上/向下滚动并且带有 descriptionLabel 的单元格已被删除时被重用,它不会重新添加。

我尝试过的替代方案:

  • 隐藏 descriptionLabel 与删除它,但是,这种方式会保持其框架,因此 bottomLabel 不会向上移动。

我是否必须重新初始化标签并将其添加到 View 中?或者是否有更好的方法来处理此用例?

最佳答案

当您隐藏 descriptionLabel 时,您应该在更改约束后调用 layoutIfNeeded 方法。在更改约束的同时,您应该更改它们的优先级。 bottomLabeltopLabel 约束的优先级应该是高的,bottomLabeldescriptionLabel 约束的优先级应该是低的。这比删除并重新添加标签要好。

关于ios - 使用 AutoLayout 从 UITableViewCell 中删除 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32464370/

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