0

我需要通过代码以编程方式约束 UITableViewCell ... 我正在尝试在单元格的 containerView 内创建一个子视图,这是实际代码:

contentView.addSubview(testContainerView)

testContainerView.leftAnchor  .constraint(equalTo: contentView.leftAnchor  , constant: 8).isActive = true
testContainerView.topAnchor   .constraint(equalTo: contentView.topAnchor   , constant: 0).isActive = true
testContainerView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 0).isActive = true
testContainerView.rightAnchor .constraint(equalTo: contentView.rightAnchor , constant: 8).isActive = true

但问题是单元格的宽度似乎超过了屏幕尺寸......我以前从未遇到过这个问题。使用此方法创建单元格:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "slotCell") as! SlotTableViewCell2
    cell.setCellDetail(currentSlot: listaSlots[indexPath.row])

    return cell
}

约束有什么问题吗?

这是当前结果的图像:

橙色矩形,是 testContainerView

4

1 回答 1

1

您为 . 使用了错误的常量rightAnchor

试试下面的代码:

contentView.addSubview(testContainerView)
NSLayoutConstraint.activate([
    testContainer.leftAnchor.constraint(equalTo: contentView.leftAnchor, constant: 8.0)
    testContainer.topAnchor.constraint(equalTo: contentView.topAnchor, constant: 0.0)
    testContainer.bottomAnchor.constraint(equalTo: contentView.bottomAnchor, constant: 0.0)
    testContainer.rightAnchor.constraint(equalTo: contentView.rightAnchor, constant: -8.0)
])

注意 上的负常数rightAnchor

额外提示:自动布局引擎喜欢在激活它们之前了解所有约束。使用上述方法是配置约束的首选方式

额外提示2:如果您的App被任何RightToLeft语言接口使用,它将被翻转。如果这不是预期的行为,请使用leadingAnchor&trailingAnchor而不是leftAnchor&rightAnchor

于 2018-09-02T14:25:43.120 回答