我有一个tableview并且我将自动布局设置为单元格,因此一个单元格的高度可能为50,另一个单元格可能为120.我需要显示最多2个单元格,因此如果计数> 2,然后细胞计数= 2,否则它等于细胞计数。
我的问题是根据每个单元格大小调整UITableView高度。如何正确设置UITableView高度约束值?
我希望我能解释一下我的意思,如果您有任何疑问,请问我
答案 0 :(得分:1)
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
if indexPath.row == 0 {
return 50
} else {
return 120
}
}
答案 1 :(得分:1)
不要明确设置高度。使用此:
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
答案 2 :(得分:1)
查看我在此StackOverflow文章中发布的代码。
您只需向UITableViewCell
添加一个静态函数,即“测量自身”,然后将其存储在“行高”变量中。
+(CGSize)preferredSize
{
static NSValue *sizeBox = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
// Assumption: The XIB file name matches this UIView subclass name.
NSString* nibName = NSStringFromClass(self);
UINib *nib = [UINib nibWithNibName:nibName bundle:nil];
// Assumption: The XIB file only contains a single root UIView.
UIView *rootView = [[nib instantiateWithOwner:nil options:nil] lastObject];
sizeBox = [NSValue valueWithCGSize:rootView.frame.size];
});
return [sizeBox CGSizeValue];
}
(你会认为到现在为止,在2016年,Apple会为我们提供一种更简单的方法......)
答案 3 :(得分:0)
尝试在计算高度时将UITableViewCell高度存储在数组中。
如果您手动计算高度,请将高度存储在数组中。 如果您自动调整单元格高度,请获取单元格,然后获取其高度并将其存储在数组中
答案 4 :(得分:0)
如果你的ios目标是> = 8,那么你可以让你的tableview单元调整而不会有太大的痛苦。
//provide the estimated height of your cell row over here
self.tableView.estimatedRowHeight = 60
self.tableView.rowHeight = UITableViewAutomaticDimension
不要忘记对单元格内容视图中的所有视图设置顶部,底部,左侧,右侧约束。
答案 5 :(得分:0)
尝试以下代码
func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
return UITableViewAutomaticDimension
}