我有一个UILabel,它已经应用了自动布局,并且更改了preferredWidth以确保其格式正确。我想要一个UIView在'下面。它并匹配标签的大小。将UIView的frame.size设置为label.frame.size不起作用,因为它不考虑正在发生的自动布局。
我认为必须有一种方法来匹配UILabel的约束,然后调整大小。但是我不认为这可行,因为UILabel的格式与单独的UIView无关。
注意:文本在运行时已知,因为它依赖于来自Web服务器的信息。
相关守则:
override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
let cell = tableView!.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as MessageTableViewCell
cell.messageLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
cell.messageLabel.numberOfLines = 0
cell.messageLabel.preferredMaxLayoutWidth = cell.frame.size.width - 35
preferredWidth = cell.messageLabel.preferredMaxLayoutWidth
cell.messageLabel.text = friends[indexPath!.row]
cell.messageLabel.sizeToFit()
cell.messageLabel.setNeedsDisplay()
//cell.msgBubble.frame.size.width = preferredWidth
//cell.msgBubble.
cell.msgBubble.layer.masksToBounds = true
cell.msgBubble.layer.cornerRadius = 10.0
return cell
// Configure the cell...
}
override func tableView(tableView: UITableView!, heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat {
var sampleLabel = UILabel()
sampleLabel.lineBreakMode = NSLineBreakMode.ByWordWrapping
sampleLabel.numberOfLines = 0
sampleLabel.preferredMaxLayoutWidth = preferredWidth
sampleLabel.text = friends[indexPath!.row]
sampleLabel.sizeToFit()
sampleLabel.setNeedsDisplay()
return sampleLabel.intrinsicContentSize().height + 10
}
答案 0 :(得分:1)
我假设您为标签添加了足够的约束。现在我们需要为视图添加约束以根据标签调整大小。
选择标签和视图,您可以在Xcode的侧栏中进行。 (cmd +鼠标点击)
然后添加约束。您可以输入您喜欢的任何值。如果收到警告,您可以更新框架或更新约束。
修改强>
我做了这个project,这是你要找的吗?