这是UITableViewCell
我有:
这三个UILabel
有trailing
,top
,bottom
和leading
个约束。
UILabel
名称的拥抱优先级和抗压缩优先级:UILabel
位置的拥抱优先级和抗压缩优先级:UILabel
类型:在我viewDidLoad
的{{1}}我做这样的事情:
UITableViewController
但是当我运行该应用时, self.tableView.estimatedRowHeight = 80
self.tableView.rowHeight = UITableViewAutomaticDimension
self.tableView.reloadData()
不会自我调整大小:
我做错了什么或者我需要做些什么才能让UITableViewCell
让他们自我调整大小?
修改
我为每个UITableViewCell
设置为numberOfLines
0,现在UILabel
位置不会出现
答案 0 :(得分:1)
您的文本很可能在运行时变大,导致单元格视图中的总高度大于行高本身。
首先将所有拥抱优先级等同,然后尝试使用“大于或等于”关系更改标签之间的间距,然后将常量设置为小到零的值。如果仍然出现约束错误,请增加tableView行高。
替代方法: 将所有3个UILabel添加到另一个UIView中,它们之间的间距为零,不要为此UIView设置高度约束,只需将其设置在cellView的centerY中并与ImageView隔开
提示:即使在约束被破坏之后,如果您的UI是您想要的,也只更改约束优先级,除非您当然知道自己在做什么
答案 1 :(得分:1)
对于你的情况,不需要垂直拥抱优先级,只需给出
label.numberOfLines = 0
工作正常。
答案 2 :(得分:0)
问题是你想要调整标签的大小,但根据你的代码,你似乎想要通过调整tableview行的大小来实现。如果是这种情况,在tableView中设置行高的正确位置是:
override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return 80
}
“返回80”表示您希望表格行高度为80.如果我不理解您的问题,请告诉我。
答案 3 :(得分:-1)
标签不起作用,因为故事板不是很有用。
设置var
:
var imageView: UIImageView ={
let image = UIImageView()
image.translatesAutoresizingMaskIntoConstraints = false
return image
}()
var textView: UITextView ={
let text = UITextView()
text.translatesAutoresizingMaskIntoConstraints = false
return text
}()
然后继续使用其他标签。
你必须像这个例子一样设置约束:
self.addSubview(imageView)
self.addSubview(textView)
imageView.bottomAnchor.constraintEqualToAnchor(self.bottomAnchor, constant: -10).active=true
imageView.leftAnchor.constraintEqualToAnchor(self.leftAnchor, constant:-10).active=true
imageView.widthAnchor.constraintEqualToConstant(70).active=true
imageView.heightAnchor.constraintEqualToConstant(70).active=true
label.topAnchor.constraintEqualToAnchor(self.topAnchor, constant: -5).active=true
label.leftAnchor.constraintEqualToAnchor(imageView.rightAnchor, constant: 3).active=true
label.widthAnchor.constraintEqualToAnchor(self.widthAnchor, constant -70).active=true
label.heightAnchor.constraintEqualToConstant(30).active=true
label2.topAnchor.constraintEqualToAnchor(label.bottomAnchor, constant: 5).active=true
label2.leftAnchor.constraintEqualToAnchor(imageView.rightAnchor, constant: 3).active=true
label2.widthAnchor.constraintEqualToAnchor(self.widthAnchor, constant -70).active=true
label2.heightAnchor.constraintEqualToConstant(30).active=true
并且这种方式也适用于第三个标签。