我有一张带静态细胞的桌子。对于一个单元格,我想根据标签的高度(在单元格内部)更改其高度,同时保持所有其他单元格的高度不变。我怎样才能获得当前细胞的高度?或者可能有更好的方法?
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if ([indexPath section] == 2) {
return self.myLabel.frame.origin.y *2 + self.myLabel.frame.size.height;
} else {
return ...; // what should go here, so the cell doesn't change its height?
}
}
答案 0 :(得分:12)
您可以致电:
[super tableView:tableView heightForRowAtIndexPath:indexPath]
<\ n>在else块中,所以如果您更改了默认高度,则无需担心。
答案 1 :(得分:4)
您可以获取/设置默认高度tableView.rowHeight
,或者您可以在更改单元格高度之前存储高度,这样您就可以从某个变量获取默认高度;
答案 2 :(得分:1)
请做这个
if ([indexPath section] == 2)
{
if(indexPath.row == 1)
return self.myLabel.frame.origin.y *2 + self.myLabel.frame.size.height;
else
tableView.rowHeight
}
答案 3 :(得分:1)
@talnicolas很好的答案,这里是Swift 3:
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
if indexPath.section == 2 {
let easy = self.myLabel.frame
return easy.origin.y *2 + easy.size.height
} else {
return super.tableView(tableView, heightForRowAt: indexPath)
}
}
答案 4 :(得分:0)
您可能想要计算约束宽度的标签高度。在这种情况下,您可以创建类似的方法:
- (CGFloat)textHeightOfMyLabelText {
CGFloat textHeight = [self.myLabel.text sizeWithFont:self.myLabel.font constrainedToSize:LABEL_MAX_SIZE lineBreakMode:self.myLabel.lineBreakMode].height;
return textHeight;
}
并在- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
中使用结果。
不要忘记添加标签的保证金值。
答案 5 :(得分:0)
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if (indexPath.section == youSectionNumber)
{
if (indexPath.row == numberOfrow)
{
return self.myLabel.frame.origin.y *2 + self.myLabel.frame.size.height;
}
}
return 44; // it is default height of cell;
}