2017-08-27 119 views

回答

0

除非特別需要使用UITextView,否則我推薦使用UILabel。這個代碼限制了UILabel爲兩行,使得它的文本自動收縮:

label.numberOfLines = 2 
label.adjustsFontSizeToFitWidth = true 
1

我相信你有一個偉大的理由使用UITextView,因此我認爲這可能是有點棘手,需要大量的測試,以看到它實際上正如你所料。

我的建議是,計算的數:

let font = yourFont 
let size = yourTextView.contentSize 
let inset = yourTextView.textContainerInset 
let rows = (size.height - inset.top - inset.bottom)/font.lineHeight 

進去textView的委託方法行,像textView:shouldChangeTextIn:...例如,變字體大小根據此信息。

另一個建議是使無形UILabel設置如下圖所示的屬性:

label.font = yourFont 
label.frame = CGRect(x: 0, y: 0, width: yourTextView.contentSize.width, height: yourTextView.contentSize.height) 
label.numberOfLines = 2 
label.adjustFontSizeToFitWidth = true 

內。然後textView的委託方法,更新label的文字和

textView.font = label.font 

我不知道由於我沒有爲自己測試它們,所以其中任何一個都可以正常工作,但我希望這可以幫助您爲此問題設定一個起點。

相關問題