2015-08-18 40 views
0

enter image description here如何佈置UITableViewCell可能有或沒有使用Autolayout的圖像?

如圖所示,單元格可能有也可能沒有圖像,圖像的數量是多種多樣的。它還具有變體高度的文本內容。 (單元格全部在同一個桌面視圖中。)

無論有沒有圖像,文本高度(行數)都是變體。

如何使用AutoLayout來佈置這種類型的單元格? 在此先感謝。

+0

所以當沒有圖像時,顯示第二行文字? –

+0

@KelvinLau不,文本高度也是變體。感謝您對這個問題感興趣。 – Evan

+0

您可以設置約束(頂部空間,底部空間,中心X,前導空間,尾部空間) – anhtu

回答

0

垂直/水平間距約束的組合可以達到您想要的效果。要獲得不同的文本高度,可以將屬性檢查器中的lines屬性設置爲0。文本將自動創建第二行,而垂直佈局約束將推動綁定到UILabel的任何內容。

然而,您將需要適應某些情況下的細胞高度......但這是另一回事。

0

我會使用numberOfLines = 0的UILabel(myLabel)和容器UIView(myImageContainerView)來容納圖像。 myLabel和myImageContainerView都會根據其內容定義自己的高度。如果沒有圖像,containerImageView將是高度零。然後,您只需在這些視圖之間設置約束。

這裏試圖表示這個ASCII圖: The | (管道符號表示垂直間隔限制) 的< - >表示一個水平間隔限制

---------------------------- 
     | 
<-> myLabel     <-> 
     | 
<-> myImageContainerView <-> 
     | 
----------------------------- 

最後,你需要一個動態的高度的UITableViewCell,你可以通過在你的tableView設置此實現:

myTableView.rowHeight = UITableViewAutomaticDimension;

+0

非常感謝。但似乎我必須在代碼中佈局單元格? – Evan

+0

@Evan你也可以在IB中做到這一點。在myImageContainerView中設置一個UIImage,使其具有頂部,前導,尾部和底部約束,以使myImageContainerView的高度依賴於圖像。如果將圖像設置爲零,myImageContainerView將具有零高度。 numberOfLines = 0的UILabel自動具有動態高度 –

+0

非常感謝! – Evan

相關問題