我想制作一个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