从 UILabel 中删除顶部和底部填充

yam*_*mbo 9 uilabel ios swift

我有一个,UILabel但由于某种原因,它的顶部和底部有额外的填充。我希望标签的高度恰好是其中文本的高度。

我一直在寻找其他问题,但似乎找不到真正有效的解决方案。或者解决方案要求您在layoutSubviewsVC的方法中调用某些内容,但我希望所有视图代码都存储在我的视图文件中。

有谁知道如何解决这一问题?

在此处输入图片说明

Yıl*_*dis 1

打电话就像;

let labelSize = UILabelWidthBasedOnTextLength(with: titleLabel) 
Run Code Online (Sandbox Code Playgroud)

然后使用像 labelSize.width 这样的方法来应用约束。

func UILabelWidthBasedOnTextLength(with label: UILabel) -> CGSize? {
        guard let text = label.text,
              let font = UIFont(name: label.font.fontName,
                                size: label.font.pointSize) else { return nil }

    var frame: CGRect = label.frame
    frame.size = text.size(withAttributes: [NSAttributedString.Key.font: font])
    return frame.size
}
Run Code Online (Sandbox Code Playgroud)

这个问题很久以前就问过,但我只是想贡献这种方法。也许这对任何新开发人员都有用。