将UILabel高度调整为文字

我有一些标签,我想调整他们的高度的文字,这是我现在写的代码

func heightForView(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
}

编辑:

这个问题不在这段代码中,所以我的问题本身就是我的问题。 它可能对其他人有用!


我只是把它放在一个操场上,它适用于我。

import UIKit

func heightForView(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
}

let font = UIFont(name: "Helvetica", size: 20.0)

var height = heightForView("This is just a load of text", font: font, width: 100.0)

Swift 3:

func heightForView(text:String, font:UIFont, width:CGFloat) -> CGFloat{
    let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude))
    label.numberOfLines = 0
    label.lineBreakMode = NSLineBreakMode.byWordWrapping
    label.font = font
    label.text = text
    label.sizeToFit()

    return label.frame.height
}

在这里输入图像描述


如果您使用AutoLayout ,则只能通过配置UI调整UILabel高度。

对于iOS8或更高版本

  • 为你的UILabel设置约束前导/尾随
  • 并将UILabel的行从1更改为0
  • 对于iOS7

  • 首先,您需要为UILabel添加包含高度
  • 然后,修改关系从Equal Greater than or Equal
  • 在这里输入图像描述

  • 最后,将UILabel的行从1更改为0
  • 您的UILabel会根据文字自动增加高度


    如果你愿意,我可以创建这个扩展

    extension UILabel {
        func setSizeFont (sizeFont: CGFloat) {
            self.font =  UIFont(name: self.font.fontName, size: sizeFont)!
            self.sizeToFit()
        }
    }
    
    链接地址: http://www.djcxy.com/p/28205.html

    上一篇: Adjust UILabel height to text

    下一篇: How to get the screen width and height in iOS?