Protola Cell中的Autolayout和动态宽度UILabel

时间:2014-12-19 15:53:50

标签: xcode swift ios8 autolayout

我正在尝试创建一个“3列”UITableViewCell,其中每列包含UILabel。两个最左边的标签很容易设置约束,它们是固定宽度,它们的文本不会超过它们的IB设置宽度。正确的标签虽然可能有一个长串,我想要实际上说,“你可以尽可能宽,直到你的宽度在超视角边缘的8个像素内。”

enter image description here

通过添加

,我已经接近了所需的效果
override func layoutSubviews() {
    ENTRY_LOG()

    log.debug("\(self.frame.width)")
    self.addConstraint(NSLayoutConstraint(item: self.destinationLabel, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: self.frame.width - 151))
    self.setNeedsUpdateConstraints()

  }

在自定义UITableViewCell类中,但这现在具有破坏单元格高度和覆盖表行之间的默认行的不良影响。

2 个答案:

答案 0 :(得分:1)

这是否有问题?一个> = 8px到superview constaint的尾随空间将完成你需要的东西。

关于你的评论:“第二栏被”粉碎“不存在” - 你应该能够通过将中心标签上的“压缩阻力优先级”设置为比最右边的值更大的值来解决这个问题标签

答案 1 :(得分:0)

如果您不希望高度由单元格内容的继承高度决定,则必须明确指定它。最好的方法是直接在表视图上设置行高:

tableView.rowHeight = 44

您还可以使用表格视图委托tableView:heightForRowAtIndexPath:

为特定单元格指定它