检查UILabel

时间:2017-09-14 04:48:56

标签: ios swift uilabel

我在使用UILabel.时遇到问题我将行数设置为0.当我的标签收到一个很大的String作为值时,发生了换行符,问题是当我获得标签的高度时,高度比它应该小,只有一行的值,但它显示String有两行。

我试过使用下面的代码,但无济于事。

let originalHeight = label.frame.size.height
label.sizeToFit() //or label.layoutIfNeeded()
let newHeight = label.frame.size.height

originalHeightnewHeight等于。

如果使用字符\n进行换行,则上述代码可以正常工作。

1 个答案:

答案 0 :(得分:0)

// MARK: - 获得字符串的动态高度

convenience init(for bodyText: String, width: CGFloat) {
if (bodyText.characters.count ?? 0) <= 0 {
    return 0
}
let cellFont = UIFont(name: "Helvetica", size: 15.0)
    //UIFont *cellFont = [UIFont systemFontOfSize:13.f];
var paragraphStyle = NSMutableParagraphStyle.default.mutableCopy()
paragraphStyle.lineSpacing = 1
paragraphStyle.lineHeightMultiple = 1.0
/// Set line break mode
paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping
/// Set text alignment
paragraphStyle.alignment = .natural
let attributesDictionary: [AnyHashable: Any] = [
        NSFontAttributeName : cellFont!,
        NSParagraphStyleAttributeName : paragraphStyle
    ]

let expectedLabelSize = bodyText.boundingRect(with: CGSize(width: width, height: FLT_MAX), options: .usesLineFragmentOrigin, attributes: (attributesDictionary as? [String : Any] ?? [String : Any]()), context: nil).size