0

我有一个从笔尖加载的自定义 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...

出于某种原因,最初显示表格时,图像位于错误的位置,但如果我上下滚动以使单元格不显示然后再次显示,则图像位置会转到正确的位置。这是什么原因造成的?

4

2 回答 2

1

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

[cell setNeedsLayout]

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

于 2012-09-11T19:37:27.440 回答
0

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

于 2012-09-11T21:54:28.293 回答