读书人

在程序运作中调整UITableViewCell高度

发布时间: 2012-08-13 13:21:53 作者: rapoo

在程序运行中调整UITableViewCell高度

最近要实现下面的效果,就是在UITableView中有很多行数据,当用户选择某一行之后,将该行高度调整为原来2倍,其它行高度不变,改行后面的行往后顺移.

这个问题困扰了很久,想过调整UITableViewCell的frame,或则调整height,或则调整origin.y,在之间插入新视图,但发现如果选择最后几行中某一行,倒数一两行不能被选中,后来又给UITableView添加手势,但由于UITableView的重用机制,滚动后会重新调整尺寸,后来的效果不尽理想.

好事多磨,想来想去,终于找到了解决方案,就是增加一个数组,

?

BOOL?bCheck[20]; (也可以是NSArray,里面添加NSNumber成员,记录cell高度,这里简单用bool数组)


记录每个cell的高度,

?

然后在:

?

?

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

?

? ??if?(bCheck[indexPath.row]) {

?

? ? ? ??return?100;

? ? }else{

?

? ? ? ??return?50;

? ? }

}

?

最后处理选择操作:

?

?

- (void)tableView:(UITableView?*)tableView didSelectRowAtIndexPath:(NSIndexPath?*)indexPath

{

?

? ??bCheck[indexPath.row] =?YES;

?

? ? [tableView?reloadData];

?

}

读书人网 >移动开发

热点推荐