我使用下面的代码来计算UILabel
height
,具体取决于它所拥有的文本,它运行正常,当我在不同的屏幕尺寸上运行代码时,它也会给出不同的结果,但是当我的UITable视图默认加载高度,但如果我滚动它然后更新。当我的UITable View加载时,我应该添加什么值才能更新?
我的代码:
messageOneLbl.numberOfLines = 0
messageOneLbl.lineBreakMode = NSLineBreakMode.ByWordWrapping
messageOneLbl.text = messageOne
messageOneLbl.sizeToFit()
print("one label height is \(messageOneLbl.frame.height)")
以上代码Alaways为所有iPhone屏幕尺寸打印相同的值,我期望更大的设备更小的价值。
答案 0 :(得分:0)
你可以这样做,
func heightForLabel(text:String, font:UIFont, width:CGFloat) -> CGFloat{
let label:UILabel = UILabel(frame: CGRectMake(0, 0, width, CGFloat.max))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.ByWordWrapping
label.font = font
label.text = text
label.sizeToFit()
return label.frame.height
}
调用此功能,它将返回高度并将该高度设置为标签。
第二件事取决于你的标签的初始高度,宽度和字体以及文字字符串。所以,同样管理你的案子!
答案 1 :(得分:0)
这取决于您在Interface Builder中使用Autolayout
属性的方式,如果您想要一个可变高度标签,只需设置left
,rigth
和{{ 1}}约束来定位您的标签和top
答案 2 :(得分:0)
问题中发布的代码非常精细,同时将高度约束添加到大于或等于> =(您需要的值)。这将解决问题。