在UITableViewCell中改变heightForRowAtIndexPath时,图像“移动”

时间:2010-03-11 16:12:34

标签: iphone cocoa-touch iphone-sdk-3.0 ios-simulator

我有一个不同高度的表视图,如heightForRowAtIndexPath中所定义。出于一些非常奇怪的原因,图像根据高度“缩进”到右边;如果高度足够低,则图像粘在单元格的左侧,但随着高度的增加,所述单元格的图像与其他行相比向右移动。

这样做的结果是一张看起来非常糟糕的列表,图片根据每一行的高度以锯齿形图案布置。

这个简单的例子揭示了这个问题:

- (CGFloat)tableView:(UITableView *)tableView 
  heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{
    return (indexPath.row+1) * 50;
}

每个单元格都设置(简化)为“Subtitle”样式单元格,其中包含:

// ...
cell.textLabel.text = @"foo";
cell.detailTextLabel.text = @"bar";
cell.imageView.backgroundColor = [UIColor redColor]; // for debugging; i have images with transparent bg
cell.imageView.image = anImageThatIs55x50pixelsBig;
return cell;

有什么想法吗?我的脑袋里充满了爱情之情。

编辑:上传了一个显示此内容的屏幕。 “图像”只是屏幕的一个小区域的屏幕截图,它看起来有点奇怪,但你得到了我确定的图片:http://img28.imageshack.us/img28/549/screenshot20100311at172.png

2 个答案:

答案 0 :(得分:0)

潜在原因可能是contentMode

UIViewUIImageView的超类)定义属性contentMode,它确定视图在其边界矩形更改时如何布置其内容。您可能希望将此属性更改为其他模式,如UIImageView的情况,它会确定图像的绘制方式和位置。

答案 1 :(得分:0)

如果您将自己的UIImageView添加到UITableViewCell而不是使用内置的UIImageView会发生什么?我相信内置的一个用于添加填充(如果有空间),如果没有则忽略它。