如何在UITableViewCell中正确定位UIImageView?

时间:2012-09-11 19:26:05

标签: iphone ios uitableview

我有一个从笔尖加载的自定义UITableViewCell。在它是三个UIImageView视图。在-(UITableViewCell*) tableView:(UITableView*) cellForRowAtIndexPath:(NSIndexPath*)indexPath方法中,我检查每一行的属性,并确定每一行是否可见。如果它们不可见,我会移动图像的x位置,以便没有空格。我正在使用:

cell.imageView1.hidden = YES;
cell.imageView2.hidden = YES;
cell.imageView3.hidden = YES;

int x = 0;

CGRect frame1 = cell.imageView1.frame;

if (property1)
{
    cell.imageView1.hidden = NO;
    frame1.origin.x = x;
    x += SPACING;
}

CGRect frame2 = cell.imageView2.frame;

if (property2)
{
    cell.imageView2.hidden = NO;
    frame2.origin.x = x;
    x += SPACING;
}

// etc...

出于某种原因,当最初显示表格时,图像位于错误的位置,但如果我向上和向下滚动以便单元格未显示然后再次显示,则图像位置将移至正确的位置。造成这种情况的原因是什么?

2 个答案:

答案 0 :(得分:1)

我不确定我是否了解您的代码。但是您可以在更改帧后尝试调用setNeedsLayout

[cell setNeedsLayout]

此方法表示此视图需要在下一次渲染时进行布局。

答案 1 :(得分:0)

感谢Felipe指出我正确的解决方案。在我的UITableViewCell子类中,我覆盖了layoutSubviews方法,以根据状态正确布局图像。