3 回答
TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊
我剛把它放在操場上,對我有用。
為Swift 4.0更新
import UIKit
func heightForView(text:String, font:UIFont, width:CGFloat) -> CGFloat{
let label:UILabel = UILabel(frame: CGRectMake(0, 0, width, CGFloat.greatestFiniteMagnitude))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byWordWrapping
label.font = font
label.text = text
label.sizeToFit()
return label.frame.height
}
let font = UIFont(name: "Helvetica", size: 20.0)
var height = heightForView("This is just a load of text", font: font, width: 100.0)
斯威夫特3:
func heightForView(text:String, font:UIFont, width:CGFloat) -> CGFloat{
let label:UILabel = UILabel(frame: CGRect(x: 0, y: 0, width: width, height: CGFloat.greatestFiniteMagnitude))
label.numberOfLines = 0
label.lineBreakMode = NSLineBreakMode.byWordWrapping
label.font = font
label.text = text
label.sizeToFit()
return label.frame.height
}

TA貢獻(xiàn)1893條經(jīng)驗(yàn) 獲得超10個(gè)贊
如果使用的是AutoLayout,則UILabel只能通過config UI 調(diào)整高度。
對于iOS8或更高版本
為您設(shè)置約束條件領(lǐng)先/追蹤 UILabel
并將行UILabel從1 更改為0

對于iOS7
首先,您需要添加包含高度UILabel
然后,將關(guān)系從修改Equal為Greater than or Equal

最后,將行UILabel從1 更改為0

您UILabel將根據(jù)文本自動(dòng)增加高度
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超9個(gè)贊
我有很強(qiáng)的工作解決方案。
在layoutSubviews中:
_title.frame = CGRect(x: 0, y: 0, width: bounds.width, height: 0)
_title.sizeToFit()
_title.frame.size = _title.bounds.size
在文本設(shè)置器中:
_title.text = newValue
setNeedsLayout()
UPD。 當(dāng)然可以使用以下UILabel設(shè)置:
_title.lineBreakMode = .ByWordWrapping
_title.numberOfLines = 0
- 3 回答
- 0 關(guān)注
- 601 瀏覽
添加回答
舉報(bào)
