我有一个从笔尖加载的自定义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...
出于某种原因,当最初显示表格时,图像位于错误的位置,但如果我向上和向下滚动以便单元格未显示然后再次显示,则图像位置将移至正确的位置。造成这种情况的原因是什么?
答案 0 :(得分:1)
我不确定我是否了解您的代码。但是您可以在更改帧后尝试调用setNeedsLayout
。
[cell setNeedsLayout]
此方法表示此视图需要在下一次渲染时进行布局。
答案 1 :(得分:0)
感谢Felipe指出我正确的解决方案。在我的UITableViewCell子类中,我覆盖了layoutSubviews方法,以根据状态正确布局图像。