UITableViewCells在编辑模式下更改大小
我想在编辑模式下更改UITableviewCell
的外观,就像它在Apple地址簿中显示的一样。单元格应该调整大小,我将添加UITextFields
作为子视图。 我知道要更改单元格的外观,您必须覆盖单元格中的LayoutSubviews
函数。我试图做到这一点,我有一些有趣的效果,并调整大小:-)UITableViewCells在编辑模式下更改大小
我已经找了一段时间,在网上找到一些提示,但我没有找到一个。 如果有人可以提供一些提示如何做到这一点的权利?链接到教程或代码将会很好。
感谢 埃迪
如果要调整细胞的高度,你也应该在你的UITableView委托更改“heightForRowAtIndexPath”。 至少这是我偶然发现了几次。
当你设置myTable.editing=YES;
它调用表视图数据源和委托方法。
因此,如果您有任何要显示的数据表,然后上面的代码行调用delgate方法
,所以你可以在这里
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
if(myTable.editing==YES)
{
return 70;//customize it.
}
return 50;
}
默认情况下,当您将表切换到编辑模式时,不会调用该函数。 这需要在tableview上调用方法reloadData。如果您调用重新加载数据,编辑动画将消失。 – 2014-07-21 22:07:21
这实际上起作用。只需在此方法中设置单元格的高度,它就可以工作。 (除非你想编辑动画)。 – Sebyddd 2014-08-29 13:45:12
覆盖setEditing:animated:
代码,并刷新你的表视图细胞存在。
覆盖setEditing:animated:
并重新加载您的表格视图单元不是一个好主意。 这是非常资源昂贵的,而不是正确的地方去做。
在UITableViewCell
子类,重写方法didtransitionToState: 在那里,你可以直接在单元格网点办事,就像这样:
- (void)didTransitionToState:(UITableViewCellStateMask)state
{
[super didTransitionToState:state];
if (state == UITableViewCellStateShowingEditControlMask) {
// edit mode : peform operations on the cell outlets here
} else if (state ==UITableViewCellStateDefaultMask) {
// normal mode : back to normal
}
我在这里使用子类方法在借记模式下更改单元格内的UILabel的颜色。它效果很好。 – 2014-02-17 20:51:52
感谢您的建议,但我在layoutsubviews动画错了,它改变了大小但它将所有细胞移动到一个地方或切割细胞的顶部......正如我在进入编辑模式时所说的非常有趣的动画:-) – Eddy 2011-03-08 12:43:31
因此,如果您在layoutSubviews中的代码错误,它可能会有所帮助,如果你向我们展示代码,以便我们可以一起找到错误的部分。 :) – Maverick1st 2011-03-08 12:48:14
即时通讯不在家atm所以我没有在这里的代码,但我做的是这样的:单元格在编辑模式..... self.frame = CGRectMake(x,y,w,h)....那么所有的单元格都会将动画移动到xy,但会像高度一样改变大小: - )...我如何更改未移动的帧.....当我今晚回到家时,我可以提供我的代码。 – Eddy 2011-03-08 12:56:30