【发布时间】:2017-12-11 20:16:59
【问题描述】:
我有一个UITableViewCell,其内容延伸到其所有边缘。我在需要不同插图的多个表格中使用此单元格。 (即一个表将其从左侧插入 8 个点,另一个将其插入 20 个点。我想缩进父代码UITableView 中的单元格(可能是cellForRow?)而不缩进整个表.
这显然是为整个表格设置的,但我想根据需要逐个单元格地进行设置:
tableView.contentInset = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: -20)
这没有任何效果:
tableViewCell.contentView.layoutMargins = UIEdgeInsets(top: 0, left: 20, bottom: 0, right: -20)
这也不起作用(即使它在单元格本身上):
override func layoutMarginsDidChange() {
super.layoutMarginsDidChange()
self.layoutMargins = UIEdgeInsets(top: 0, left: 20 bottom: 0, right: -20)
}
【问题讨论】:
-
您的单元格是自定义 UITableViewCell 子类吗?如果是这样,您可以在其中编写布局代码。
-
@Connor 是的,我正在使用自定义 UITableViewCell 子类。但是我不能在那里写代码,因为单元格在不同的表格中使用,并且单元格不知道它在哪个表格中。
-
那么,在您的
cellForRow中,您可能正在传递一些对象来配置您的自定义单元格,对吗?我会扩展该对象(或传入第二个对象)以包含一些变量,该变量告诉单元格是否有条件地使用这种不同的布局。 -
@Connor 非常有效,但正如我所提到的,单元格上的
override func layoutMarginsDidChange() {似乎没有效果。 -
当
cellForRow被调用并且您正在创建您的单元格时,您应该在每个单独的单元格上设置它,然后再将单元格返回到 UITableView。
标签: ios swift uitableview uiedgeinsets