【问题标题】:Image "moves" when varying heightForRowAtIndexPath in UITableViewCell在 UITableViewCell 中改变 heightForRowAtIndexPath 时图像“移动”
【发布时间】:2011-01-26 11:07:58
【问题描述】:

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

这样做的结果是一个看起来很糟糕的列表,图像根据每一行的高度以锯齿形图案松散地排列。

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

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

每个单元格都设置(简化)为“字幕”样式的单元格:

// ...
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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 出于测试目的,您可以创建 UIImageView,然后使用单元格的 addSubview 方法,如果这最终成为您的解决方案,您可能应该继承 UITableViewCell。
    • 做到了!非常感谢你的想法!在某些时候,我绝对应该制作自己的单元格,但现在,下面的技巧(在 cellForRowAtIndexPath 中): UIImageView *iv = [[UIImageView alloc] initWithFrame:CGRectMake(0, [self tableView:tableView heightForRowAtIndexPath:indexPath] /2-26,55,55)]; cell.indentationLevel = 5; // 不获取图像内的文本 iv.image = theImage; [单元格添加子视图:iv]; [iv 发布];
    【解决方案2】:

    一个潜在的原因可能是contentMode

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

    【讨论】:

    • 我尝试将单元格的 contentMode、单元格的视图和 imageView 更改为各种不同的东西,但它似乎没有做任何事情。 ://
    猜你喜欢
    • 2021-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多