我在使用UILabel.
时遇到问题我将行数设置为0.当我的标签收到一个很大的String
作为值时,发生了换行符,问题是当我获得标签的高度时,高度比它应该小,只有一行的值,但它显示String
有两行。
我试过使用下面的代码,但无济于事。
let originalHeight = label.frame.size.height
label.sizeToFit() //or label.layoutIfNeeded()
let newHeight = label.frame.size.height
originalHeight
和newHeight
等于。
如果使用字符\n
进行换行,则上述代码可以正常工作。
答案 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