UITableViewCell的自定义高度选择了背景视图

时间:2015-09-05 12:22:00

标签: ios objective-c uitableview

所以我要自定义UITableViewCell 选择后台视图。我在这里做了什么:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
  ...

  CGRect cellFrame = [tableView rectForRowAtIndexPath:indexPath];
  CGRect selectedBackgroundFrame = cellFrame;
  UIView *selectedBackgroundView = [[UIView alloc] init];

  selectedBackgroundFrame.size.height = 5;
  [selectedBackgroundView setFrame:selectedBackgroundFrame];
  selectedBackgroundView.backgroundColor = [UIColor colorWithRed:180/255.0
                                                    green:138/255.0
                                                     blue:171/255.0
                                                    alpha:1];

  NSLog(@"%f %f %f %f",
        selectedBackgroundFrame.size.width,
        selectedBackgroundFrame.size.height,
        selectedBackgroundFrame.origin.x,
        selectedBackgroundFrame.origin.y);
  cell.selectedBackgroundView = selectedBackgroundView;

  return cell;
}

但结果是选中的背景视图仍会填充整个单元格,而不是我期望的高度5.

它还会输出正确的内容320.000000 5.000000 0.000000 0.000000。怎么了?

2 个答案:

答案 0 :(得分:0)

您可能错过

中的以下行

ViewDidLoad插入新行时,请使高度一致。:

self.tableView.estimatedRowHeight = kCellHeight; // Your custom height for cell
self.tableView.rowHeight = UITableViewAutomaticDimension;

而且,

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{

    return kCellHeight;
}

答案 1 :(得分:0)

这可能是因为某个地方正在视图上设置autoresizingMask。也许尝试将其设置为flexibleWidth,而不是在flexibleHeight

中设置cellForRow