我根据代码改变单元格框架(向左和向右添加边距)。问题是细胞只有在它们消失后才更新它们的帧并通过滚动再次出现。我也使用了表视图 - reloadData,但它没有用。如何在不滚动的情况下强制重绘单元格?
- (UITableViewCell *) tableView: (UITableView *) tableView
cellForRowAtIndexPath: (NSIndexPath *) indexPath {
PersonTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: @"TableViewCellID"
forIndexPath: indexPath];
cell.frame = CGRectMake(20, cell.frame.origin.y, cell.frame.size.width-2*20, cell.frame.size.height);
/* tried any of those
[cell setNeedsDisplay];
[cell setNeedsLayout];
[cell layoutIfNeeded];
*/
return cell;
}
答案 0 :(得分:1)
我建议使用.xibs。更容易。
据我所知,您无法以这种方式更改单元格的框架。单元格的高度由heightForRowAtIndexPath
确定,宽度设置为tableView的宽度。
你可能会以某种方式按照你的方式去做,但我知道的最简洁的方法如下。
如果您希望在单元格周围有边距,您可以:
UITableViewCell
的{{1}}创建一个笔尖,并使用约束放置边框。 UIView
(我们称之为UIView
)并将其作为borderedContentView
的直接子视图contentView
与borderedContentView
的约束放在一起,前导,尾随,顶部和底部约束设置为创建所需边框宽度的值。contentView
,则必须将backgroundColor
的{{1}}设置为与contentView
backgroundColor
相同的颜色为了创造一个边际的错觉。在tableView
的委托方法backgroundColor
或tableView
willDisplayCell:
的子类或其他相关方法中执行此操作。如果您不想使用界面构建器,也可以以编程方式执行此操作,但在IB中这很容易。
希望这有帮助。
答案 1 :(得分:1)
问题的解决方案是覆盖 setFrame UITableViewCell的方法。这样就完美了。