簡體   English   中英

UITextView根據UITableViewCell中的文本的動態寬度

[英]UITextView dynamic width according to text inside in UITableViewCell

我正在努力使聊天氣泡像在iMessage中一樣。 我必須使用UITextView來利用DataDetectors來自動檢測URL,電話號碼和地址。 我的視圖層次結構就像;

-UITableViewCell
 -ContentView
  -ChatBubbleContainerView
   -UITextView

ChatBubbleContainerView具有以下約束

  • 左,右,上和下邊距10點-> ContainerView

UITextView具有以下約束

  • 左,右,上和下邊距10點-> ChatBubbleContainerView

我想實現一種行為,使文本視圖根據其內部內容(例如文本)自動擴展其高度和寬度。 但是文本視圖沒有固有的內容大小

這些是我嘗試過並得到錯誤結果的

  1. 覆蓋文本視圖的intrinsicContentSize屬性,但是它也不起作用。
  2. ChatBubbleContainerView一個寬度約束,並將其更改為sizeThatFits()方法的結果
  3. ChatBubbleContainerView一個寬度約束,並將其更改為text.boundingRect方法的結果

這些是我得到的結果

  1. 當我滾動表格視圖時,它無法正常工作並且單元未按預期布局
  2. 它可以正常工作,但是筆尖中的單元格的初始寬度為375點,這對於4.7英寸的設備來說是很好的,但是當我切換到iPhone SE之類的設備時,初始表視圖負載或單元格插入時它的英寸為4英寸,則該單元格的寬度正在計算根據375點而不是320點。 滾動單元格后,布局按預期進行布局。
  3. 與2相同。

當我使用UILabel嘗試相同的布局時,它按預期工作。 如您所知, UILabel具有固有的內容大小。

謝謝

TextView約束很好,您需要對ChatBubbleContainerView約束進行一些更改。

ChatBubbleContainerView約束:

  • 頂部,頂部,底部-> 10點

  • 將MaxWidth(GreaterThanOrEqual)設置為contentView,例如0.85 ,也可以將TrailingConstraint設置為maxConstant(GreaterThanOrEqual設置為contentView。

您需要設置maxWidth,然后只有ChatBubbleContainerView會響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM