修改单元格子视图的框架
Modify frames of the cell's subviews
我的 table 视图由带有多个子视图的自定义单元格组成。
让我们调用其中两个子视图 AView 和 BView。它们并排放置。
有些情况下我不想显示 BView(我将其隐藏)。但这意味着我应该使 Aview 的宽度增加 BView 的宽度。
我试图在数据源的 - tableView:cellForRowAtIndexPath:
方法中更改 AView 的框架。没有结果。然后我试图在我的代表的 – tableView:willDisplayCell:forRowAtIndexPath:
中更改它。又失败了。
在这两种情况下,AView 的大小都与 Storyboard 中的大小相同。
那么,AView的frame应该在哪里修改呢?
您可以通过多种方式做到这一点。我认为非常干净的一个建议是:
- 子类 UITableViewCell...例如将其命名为 MyCell。
- 在
MyCell
中创建一个 IBOutlet
链接到 BView 的宽度限制。将其命名为 BViewWidthConstraint。
在MyCell
中创建以下函数:
func hideBView() -> void {
self.BViewWidthConstraint.constant = 0
}
在 cellForRowAtIndexPath
中,您现在可以:
if needToHideBView {
cell.hideBView()
}
我假设您正在使用 Autolayout 并且设置正确!
我的 table 视图由带有多个子视图的自定义单元格组成。
让我们调用其中两个子视图 AView 和 BView。它们并排放置。
有些情况下我不想显示 BView(我将其隐藏)。但这意味着我应该使 Aview 的宽度增加 BView 的宽度。
我试图在数据源的 - tableView:cellForRowAtIndexPath:
方法中更改 AView 的框架。没有结果。然后我试图在我的代表的 – tableView:willDisplayCell:forRowAtIndexPath:
中更改它。又失败了。
在这两种情况下,AView 的大小都与 Storyboard 中的大小相同。
那么,AView的frame应该在哪里修改呢?
您可以通过多种方式做到这一点。我认为非常干净的一个建议是:
- 子类 UITableViewCell...例如将其命名为 MyCell。
- 在
MyCell
中创建一个IBOutlet
链接到 BView 的宽度限制。将其命名为 BViewWidthConstraint。 在
MyCell
中创建以下函数:func hideBView() -> void { self.BViewWidthConstraint.constant = 0 }
在
cellForRowAtIndexPath
中,您现在可以:if needToHideBView { cell.hideBView() }
我假设您正在使用 Autolayout 并且设置正确!