3

这要死我了!
我有一个UITableView带有图像、姓名和电话号码的单元格。
看这里:

在此处输入图像描述

现在,我想在触摸单元格时增加单元格的高度,以便在其中添加一些按钮。当我消耗单元格时,我还将它的 bg 图像更改为更高的图像。
我使用[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];它,它工作得很好,平滑地动画单元格,除了它也改变了单元格的内容:

单元格的内容调整大小:(

我能做些什么让内容在单元格调整大小后保持不变?

顺便说一句,我确实尝试过使用,
[_tableView beginUpdates];
[_tableView endUpdates];
但细胞只是“跳”到了新的高度,所以我放弃了。

4

5 回答 5

2

您需要了解 contentView 的布局。

如果您使用Autolayout,请检查您的约束 ( cell.contentView.constraints)。如果您使用UIViewAutoresizing,请为 contentView 的所有子视图设置正确的 autoresizingMasks ( cell.contentView.autoresizingMask)。您也可以尝试关闭 autoResizing ( cell.contentView.autoresizesSubviews = NO),但这可能会导致错误的结果。

另外我想知道,为什么单元格背景图像中有一个箭头?可能您也应该使用其他图像。

于 2013-04-23T09:07:12.380 回答
2

您可以创建两个自定义单元格,一个在扩展之前创建,另一个用于扩展单元格。当您触摸单元格时,存储选定的单元格indexpath并在重新加载表格时,相应地cellForRowAtIndexPath:检查indexpath和加载单元格。

于 2013-04-23T09:23:29.043 回答
1

尝试将UIViewAutoresizing姓名和电话号码标签(或内容中的任何其他 UI 元素)的掩码设置为固定的上边距。

于 2013-04-23T09:08:29.523 回答
0

谢谢大家的回答,但没有任何帮助。起初我使用了内置的单元格项目(imageView、textLabel、detailTextLabel),这些项目随着单元格的转换而改变大小。
当我将带有定义框架的自定义子视图添加到它工作的单元格时。

于 2013-04-23T11:00:35.993 回答
0

尝试以下委托方法来设置 tableview 的高度

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    return 70.0;
}

您可以创建一组图像

imgPaths = [[NSArray alloc] 
                initWithObjects:
                [[NSBundle mainBundle] pathForResource:@"abc" ofType:@"png"],
                [[NSBundle mainBundle] pathForResource:@"def" ofType:@"png"],nil];

将其添加到 cellForRowAtIndexPath 方法中。

例子:

[cell.imageView setImage:[UIImage imageWithContentsOfFile:[imgPaths objectAtIndex:indexPath.row]]];
于 2013-08-08T00:51:20.457 回答