6

我有一个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)
}
4

1 回答 1

1

确保限制在 xib/storyboard 中的边距。然后在 上设置以下内容UITableViewCell

var topInset: CGFloat = 0
var leftInset: CGFloat = 0
var bottomInset: CGFloat = 0
var rightInset: CGFloat = 0

override func layoutMarginsDidChange() {
    super.layoutMarginsDidChange()
    self.layoutMargins = UIEdgeInsets(top: topInset, left: leftInset, bottom: bottomInset, right: rightInset)
}

然后在 tableViewcellForRowAt中,使用以下内容:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let browseTableViewCell = tableView.dequeueReusableCell(withIdentifier: "BrowseTableViewCell", for: indexPath) as! BrowseTableViewCell

    browseTableViewCell.leftInset = 20
    browseTableViewCell.rightInset = 20
    // Top and bottom insets are not needed. They will default to 0.

    return browseTableViewCell
}
于 2017-12-11T22:51:44.713 回答