以前一直没发现有这么个属性,但是现在看到了就记录下,我们之前换行的话可能都是用计算这个文本的宽和高,然后指定相应的宽度,然后再去设置numberOfLines = 0。这样设置的话把label放到tableViewCell中有的时候可能会出现计算错误的情况,所以我们最好去使用preferredMaxLayoutWidth,这个就是我们指定约束这个label的宽度来进行设置的。我们可以这么做,在使用的时候要先把UILabel的label.translatesAutoresizingMaskIntoConstraints = false 这个给设置上。表示使用autoLayout来布局。
//可以在参数中进行赋值,如果我们没有指定color和fontSize的值就用默认的,这里多加了一个参数就是screenInset,代表的是距离屏幕的左边右边的边距
convenience init(title:String,color:UIColor = UIColor.darkGray,fontSize:CGFloat = 13,screentInset:CGFloat = 0)
{
self.init()
textColor = color
font = UIFont.systemFont(ofSize: fontSize)
text = title
//设置行数没有限制,想要换行就要设置有宽度的限制
numberOfLines = 0
preferredMaxLayoutWidth = UIScreen.main.bounds.size.width - CGFloat(2*screentInset)
textAlignment = .left
}