2016-11-08 232 views
0

需要一些幫助。我正在構建一個聊天應用,並希望聊天textView根據文本的寬度進行調整,因此如果短消息,textView會相應地進行調整。我使用自動佈局,但似乎無法弄清楚如何根據textView的文本行長度動態調整約束的常量。謝謝。UITextView動態寬度與文本iOS

我怎麼會有現在:

enter image description here

約束:

enter image description here

+0

你使用的是UITableViewAutomaticDimension –

+0

是的,但只是似乎照顧了單元格的高度 – dcotter

回答

0

enter image description here

PLZ記住這個步驟

1固定標籤寬度設置它的相對於大於或等於> 0

2採取拖尾約束設置它的關係大於或等於> 0

+0

謝謝balkaran。使用尾隨約束設置爲> = 0的標籤結束了訣竅 – dcotter

+0

歡迎@dcotter :) –

0

可以刪除尾隨的空間來上海華擺脫文本lenght 寬度,你可以試試嗎?

+0

如果我刪除尾隨空間超級查看textview展開超過視圖時,文本很長。 – dcotter

1

編程,你可以不喜歡,

目標C

- (void)textViewDidChange:(UITextView *)textView { 
    CGFloat fixedWidth = textView.frame.size.width; 
    CGSize newSize = [textView sizeThatFits:CGSizeMake(fixedWidth, MAXFLOAT)]; 
    CGRect newFrame = textView.frame; 
    newFrame.size = CGSizeMake(fmaxf(newSize.width, fixedWidth), newSize.height); 
    textView.frame = newFrame; 
} 

斯威夫特

let fixedWidth = textView.frame.size.width 
textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude)) 
let newSize = textView.sizeThatFits(CGSize(width: fixedWidth, height: CGFloat.greatestFiniteMagnitude)) 
var newFrame = textView.frame 
newFrame.size = CGSize(width: max(newSize.width, fixedWidth), height: newSize.height) 
textView.frame = newFrame; 
+0

這似乎沒有工作。也許我的約束覆蓋了它? – dcotter

+0

刪除禁忌然後嘗試此操作。 – User511

+0

感謝艾莎的幫助。我刪除它,它只是使它擴大超出其看法。但是我把它轉換成了一個標籤,並在其他一些答案的幫助下讓它起作用。 – dcotter

1

而不是UITextView中創建一個自定義UILable類並將約束像我顯示follwing圖像。

enter image description here

+0

謝謝chetu。你引導我走向正確的道路。使用標籤似乎是正確的選擇。 – dcotter