所以我要自定义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
。怎么了?
答案 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