我是iphone开发的新手。我正在使用自定义tableview单元格。因此,我必须根据条件增加和减少自定义单元格高度。我增加了但是在增加自定义单元格的同时,主要的tableview也增加了。我只需要增加自定义单元格。下面我展示了我使用的代码。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"test"];
if (!cell) {
cell= [[TableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"test"];
}
cell.backgroundColor = [UIColor blueColor];
// Configure the cell...
return cell;
}
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
int testvalue=1;
if(testvalue == 1) {
return 45;
} else {
return 100;
}
}
答案 0 :(得分:1)
首先,我强烈建议您为tableView使用 UITableViewAutomaticDimension ,这样您就不必担心单元格大小了。
现在,根据您的要求,您希望在某些条件下更改单元格大小,因此您可以执行以下操作:
your_height_constraint.constant = your_new_value
希望这会对你有所帮助。
答案 1 :(得分:0)
我的工作方式是动画化最后一个视图的底部约束
func showOrHide() {
UIView.animate(withDuration: 0.2) {
if !self.isExpanded {
self.heightConstraint?.constant = 0
self.isExpanded = true
} else {
self.heightConstraint?.constant = 150
self.isExpanded = false
}
self.contentView.layoutIfNeeded()
}
}
然后在tableview上调用beginUpdates和endUpdates调整单元格高度,否则下沉将不起作用
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let cell = tableView.cellForRow(at: indexPath) as! TableViewCell
cell.showOrHide()
tableview.beginUpdates()
tableview.endUpdates()
}