UILabel的高度对于它的宽度要大

时间:2017-03-18 16:04:48

标签: ios swift autolayout

正如你在这里看到的,这是一个带有随机文本的UILabel:

enter image description here

UILabel文字的高度太大了。我只想根据需要调整高度,以适应每种不同的宽度内容和大小。添加此扩展程序:

extension UILabel{

    func requiredHeight() -> CGFloat{

        let label:UILabel = UILabel(frame: CGRect(0, 0, self.frame.width, CGFloat.greatestFiniteMagnitude))
        label.numberOfLines = 0
        label.lineBreakMode = NSLineBreakMode.byWordWrapping
        label.font = self.font
        label.text = self.text

        label.sizeToFit()

        return label.frame.height
    }
}

extension CGRect{
    init(_ x:CGFloat,_ y:CGFloat,_ width:CGFloat,_ height:CGFloat) {
        self.init(x:x,y:y,width:width,height:height)
    }
}

还没有工作......这可以在Storyboard中做到吗?我尝试设置宽高比,但是当以编程方式使标签变大时,这会失败。有没有一种简单的方法来设置UILabel的高度以匹配它的内容,甚至可能在故事板中?由于高度与需要的高度不对应,我的整个布局都搞砸了。 UILabel需要例如来自顶部布局的10个点。由于高度很大,UILabel在与故事板中的沙发布局不同的设备上运行时,其设置远远低于所需的设置。

1 个答案:

答案 0 :(得分:0)

我认为您可以在故事板中设置UILabel的顶部和底部约束

在此示例中,独立于" LABEL BIG"的字体大小。总是会有10个点的顶部布局和" LABEL SMALL"将始终与" LABEL BIG"

垂直分开8个点

enter image description here