UITableViewCells在编辑模式下更改大小

问题描述:

我想在编辑模式下更改UITableviewCell的外观,就像它在Apple地址簿中显示的一样。单元格应该调整大小,我将添加UITextFields作为子视图。 我知道要更改单元格的外观,您必须覆盖单元格中的LayoutSubviews函数。我试图做到这一点,我有一些有趣的效果,并调整大小:-)UITableViewCells在编辑模式下更改大小

我已经找了一段时间,在网上找到一些提示,但我没有找到一个。 如果有人可以提供一些提示如何做到这一点的权利?链接到教程或代码将会很好。

感谢 埃迪

如果要调整细胞的高度,你也应该在你的UITableView委托更改“heightForRowAtIndexPath”。 至少这是我偶然发现了几次。

+0

感谢您的建议,但我在layoutsubviews动画错了,它改变了大小但它将所有细胞移动到一个地方或切割细胞的顶部......正如我在进入编辑模式时所说的非常有趣的动画:-) – Eddy 2011-03-08 12:43:31

+0

因此,如果您在layoutSubviews中的代码错误,它可能会有所帮助,如果你向我们展示代码,以便我们可以一起找到错误的部分。 :) – Maverick1st 2011-03-08 12:48:14

+0

即时通讯不在家atm所以我没有在这里的代码,但我做的是这样的:单元格在编辑模式..... self.frame = CGRectMake(x,y,w,h)....那么所有的单元格都会将动画移动到xy,但会像高度一样改变大小: - )...我如何更改未移动的帧.....当我今晚回到家时,我可以提供我的代码。 – Eddy 2011-03-08 12:56:30

当你设置myTable.editing=YES;它调用表视图数据源和委托方法。

因此,如果您有任何要显示的数据表,然后上面的代码行调用delgate方法

,所以你可以在这里

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 

     if(myTable.editing==YES) 
     { 
      return 70;//customize it. 
     } 
     return 50; 

} 
+2

默认情况下,当您将表切换到编辑模式时,不会调用该函数。 这需要在tableview上调用方法reloadData。如果您调用重新加载数据,编辑动画将消失。 – 2014-07-21 22:07:21

+0

这实际上起作用。只需在此方法中设置单元格的高度,它就可以工作。 (除非你想编辑动画)。 – 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 
    } 
+0

我在这里使用子类方法在借记模式下更改单元格内的UILabel的颜色。它效果很好。 – 2014-02-17 20:51:52