2017-09-14 89 views
0

我使用UILabel.時出現問題我將行數設置爲0.當我的標籤收到一個大的String作爲值時,發生換行符問題是當我得到標籤的高度時,高度比它應該小,只有線的值,但它顯示了String兩行。檢查UILabel中是否有換行符

我試圖使用下面的代碼,但無濟於事。

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

originalHeightnewHeight是平等的。

如果換行符是使用字符\n進行的,則上述代碼有效。

+0

集contrasint完美 – Jaydip

回答

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 
+0

會是什麼的代碼看起來像斯威夫特3? –

+0

我正在爲swift編輯我的答案。請看更新的答案。 –