每次轻按单元格都会运行layoutSubviews()

时间:2019-06-06 20:27:38

标签: ios swift uitableview

我正在使用Swift开发iOS应用,并且我有一个UITableView和自定义UITableViewCells,通过覆盖layoutSubviews()在单元格的左侧和右侧具有间距。

这可以通过将self.bounds.size.width减去40来实现。

由于我不太擅长解释,因此这里有一张图片:

image of my app

但是问题是,当我单击一个单元格时,被覆盖的layoutSubviews()函数会再次运行,因此该单元格会再次缩小,因为它会再次减去40到已经的原始{ {1}}。

shrunken UITableViewCell

如何避免每次单击单元格时都运行self.bounds.size.width - 40并使其在加载视图时仅运行一次?

我不知道为什么再次运行layoutSubviews,因为它已加载到我的自定义UITableViewCell类中。

这里有我的代码:

layoutSubviews()

1 个答案:

答案 0 :(得分:2)

切勿在{{1​​}}中修改视图的框架或边界。您唯一要做的就是根据视图的当前大小更新视图子视图的框架或边界。

您应该做的是修改单元格视图类,使其具有显示缩进和圆角的视图。我们称其为“背景视图”。将单元格的其他子视图添加到此背景视图。然后将背景视图添加到单元格的contentView中。

您的layoutSubviews不应更改单元格的层。该逻辑属于自定义单元格类。