根据UITableView Cell中不同屏幕尺寸的文本长度计算UILabel高度

时间:2016-09-05 12:40:06

标签: ios swift user-interface

我使用下面的代码来计算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屏幕尺寸打印相同的值,我期望更大的设备更小的价值。

3 个答案:

答案 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属性的方式,如果您想要一个可变高度标签,只需设置leftrigth和{{ 1}}约束来定位您的标签和top

答案 2 :(得分:0)

问题中发布的代码非常精细,同时将高度约束添加到大于或等于> =(您需要的值)。这将解决问题。