2016-03-11 91 views
1

我試圖儘量減少我的表格單元格的聊天(IOS)的寬度。我只是喜歡用WhatsApp聊天等泡泡來區分我們和其他人聊天消息。迅速的UITableView設置rowWidth

+2

即使在像WhatsApp這樣的應用程序中,單元仍然跨越整個屏幕。這只是細胞內對話氣泡的大小減小了。 – Michael

回答

0

使用UICollectionView,在這裏你可以自定義這兩個單元格高度和寬度。

2

該行的寬度將始終是的tableview的寬度。對於你所描述的你想要使用UITableView併爲用戶和他們的朋友製作自定義單元格。

如果您確實想要自定義單元格的寬度,則應考慮使用UICollectionView,但對於您所描述的內容而言,表格視圖是作業的正確工具。

0

行的寬度將始終等於的UITableView的寬度。正如Blake所說,從UI(嚴格意義上)來看,UICollectionView將允許您指定寬度和高度。

但它並不總是爲自UICollectionView簡單是不是「的UITableView與不同的佈局」。

動態尺寸

計算動態尺寸是更容易使用的UITableView的,你會prolly需要,因爲聊天氣泡的大小不同一點。在集合視圖中,您必須有一個支持單元,您將手動佈局並讓它爲您計算大小。

的UITableView能夠基於你的汽車佈局約束單元格的高度。

延遲加載

由於收集意見可以有任何類型的佈局,沒有順序。這意味着收集視圖將不得不嘗試加載單元格並預先計算其大小和位置。由於聊天記錄可以包含許多消息,並且您需要的僅僅是垂直加載和顯示它們,所以最好是堅持使用UITableView。

解決方案:

正如我以前所說,單元寬度將始終是相同的 - 等於表視圖的寬度。只有它的內容必須改變。

  1. 在單元格的內容視圖中創建一個標籤並將其固定到單元格的所有四個邊上。將行數設置爲0,並換行爲換行。
  2. 在它下面,創建一個代表你的'氣泡'的視圖。可以是9切片圖像視圖,也可以是自定義視圖,您可以在其中實現氣泡繪製邏輯(使用子視圖或重寫drawRect:執行一些自定義繪圖)。
  3. 將氣泡視圖固定到標籤上以便環繞它,例如,(僞):

var margin = 4 bubbleView.top = label.top - margin bubbleView.bottom = label.bottom + margin bubbleView.left = label.left - margin bubbleView.right = label.right + margin

  • 確保從tableView(tableView:heightForRowAtIndexPath:
  • 重要返回UITableViewAutomaticDimension:你得玩了一下有標籤的限制使其與左/右對齊。您可以在運行時切換.Leading和.Trailing約束。氣泡/標籤的大小不應改變,只有它們的對齊方式基本上是約束固定的屬性值。