我想在最後創建帶有Read More/Read Less的段落。
這是我的代碼;
如何使用Swift 3設置標籤高度來自動調整Read More/Less?
func getLabelHeight(text: String, width: CGFloat, font: UIFont) -> CGFloat {
let lbl = UILabel(frame: .zero)
lbl.frame.size.width = width
lbl.font = font
lbl.numberOfLines = 0
lbl.text = text
lbl.sizeToFit()
lbl.adjustsFontSizeToFitWidth = true
return lbl.frame.size.height
}
@IBAction func btnReadMore(_ sender: Any) {
if isLabelAtMaxHeight {
btnReadmore.setTitle(NSLocalizedString("Read more", comment: ""), for: .normal)
btnReadmore.titleLabel!.font = UIFont (name: "Tharlon", size: 13)
isLabelAtMaxHeight = false
lblReviewHeight.constant = 29
lblReview.font = UIFont (name: "Tharlon", size: 13)
}
else {
btnReadmore.setTitle(NSLocalizedString("Read less", comment: ""), for: .normal)
btnReadmore.titleLabel!.font = UIFont (name: "Tharlon", size: 13)
isLabelAtMaxHeight = true
lblReviewHeight.constant = getLabelHeight(text: lblReview.text!, width: view.bounds.width, font: lblReview.font)
lblReview.font = UIFont (name: "Tharlon", size: 13)
lblReview.lineBreakMode = NSLineBreakMode.byTruncatingHead
}
}
我還設置在屬性檢查器中的標籤 「自動換行」。
問題是,當我在Read Less部分添加「NSLineBreakMode.byTruncatingHead」時,所有文本都完全顯示。但是,文字內部的某些字詞消失了。
因此,我刪除該代碼並運行應用程序。那時,文本沒有完整顯示,只顯示一半。我一整天都在努力解決這個問題。
我不想使用任何其他庫。
任何人都可以幫助我嗎?
兄弟我無法刪除lblReviewHeight,因爲它控制標籤的高度,當我點擊Read more/less按鈕時。 –
@MayPhyu如果您對該標籤有正確的約束,那麼@MayPhyu自動佈局會自動爲我們計算高度,這意味着如果您的標籤正確限制了「寬度」或「前導」「尾部」或「左」「右」或給出一個'preferredMaxLayoutWidth',你會得到這個標籤的最佳尺寸。 –