我想製作一個UITableViewController
具有不同的單元格大小和不同的單元格內容。UITableViewController具有不同的單元格大小和Storyboard中的單元格內容
例如:
是否有使用AutoLayout
的Storyboard
內定義TableViewCells
的大小不同的方式?定義TableViewCells
的內容(帶有內容的UIView
)的最佳方式是什麼?
我想製作一個UITableViewController
具有不同的單元格大小和不同的單元格內容。UITableViewController具有不同的單元格大小和Storyboard中的單元格內容
例如:
是否有使用AutoLayout
的Storyboard
內定義TableViewCells
的大小不同的方式?定義TableViewCells
的內容(帶有內容的UIView
)的最佳方式是什麼?
要改變的UITableView的細胞,你有兩個選擇:
選項A(最好)是使用自動調整大小的TableView細胞與自動佈局約束。
要使用選項A,你需要確保你的內容查看有明確的頂部&底部(在這裏看到我的形象)約束,以在內容查看所有的UI元素爲例:
標題UILabel具有超視圖(Cell ContentView)的頂部空間和與SubTitle的垂直間距。 SubTitle對superview(Cell ContentView)也有一個底部空間約束。
這允許單元格自動化,因爲我的UI元素對內容視圖具有頂部的約束。
最後一步,使自動調整大小是設置在您的UITableView這2個屬性:
self.tableView.estimatedRowHeight = 60.0;
self.tableView.rowHeight = UITableViewAutomaticDimension;
的estimatedRowHeight
值應儘可能靠近你可以猜測其真實尺寸,這有助於加快計算了一下。
選項B是將- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
委託添加到您的UIViewController。
你應該手動提供單元的高度。 如果您只使用2個不同的細胞,2米固定的高度,您可以使用方案B,以及有你添加一個邏輯來檢測細胞和返回的高度...
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [tableView cellForRowAtIndexPath:indexPath];
if ([cell isKindOfClass:[MyCustomCellTypeAClass class]]) {
return 44;
}
else {
return 100;
}
}
如果您正在使用自動 - 佈局,高度將使用約束來計算(如果您正確設置);你必須使用代理方法如下 -
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
使用故事板?你的意思是這樣嗎? enter image description here
也許我應該提供一個演示(StackOverFlowQuestions02)來清楚。更多細節--->鏈接:
https://github.com/tingxins/StackOverFlowQuestions
我相信,運行演示,你會得到它。
您可以使用具有不同識別符的不同單元格。 – KKRocks
我知道,我也是這麼說的,至少從哪個定製的細胞類來說。但我無法改變細胞的大小。 – user6867907
請問清楚你想要什麼?如果您嘗試過任何操作,請在此處添加代碼。 – KKRocks