UITableViewCell *cell = [tableViewController.tableView cellForRowAtIndexPath:[NSIndexPath indexPathForRow:1 inSection:0]];
[cell setFrame:CGRectMake(cell.frame.origin.x, cell.frame.origin.y - 34, cell.frame.size.width, cell.frame.size.height)];
我想更改表视图单元格的框架,代码在一些ViewController中工作,但有些它不起作用。 我想知道它有什么问题。
非常感谢。
答案 0 :(得分:2)
您无法完全控制细胞框架,尤其是原点。要求表视图委托表视图单元格,但其位置取决于表视图的内部逻辑,以便正确地将单元格放在表视图(这是一个滚动视图子类)中。当刷新表格视图的显示部分时,重新排列单元格位置并更新帧原点。 因此,虽然您的代码没有错,但它与您无法完全控制的某些表内部规则冲突,因此结果可能无法预测。
如果您希望看到此更改的可见效果,可以将帧换换器代码移动到代码的其他部分,例如在
tableView:didSelectRowAtIndexPath:
内
在这种情况下,您可以触摸一个单元格,调用此代码并更改单元格框架,您将立即进行更改。但是,只要您将单元格滚出iPhone屏幕,然后在屏幕上移回此单元格,您就会注意到它将重新出现在原始位置。