这是在杀我!
我有UITableView
个单元格,其中包含图片,姓名和电话号码
看这里:
现在,我想在触摸时消耗单元格的高度,这样我就可以在其中添加一些按钮。当我消耗细胞时,我也会改变它的bg图像(更高的一个)
我使用[tableView reloadRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
来做它并且效果很好,可以平滑地动画细胞,除了它还会更改单元格的内容:
我能做的任何事情都会让细胞调整后的内容保持不变吗?
顺便说一句,我确实尝试过使用,[_tableView beginUpdates];
[_tableView endUpdates];
答案 0 :(得分:2)
您需要了解contentView的布局。
如果您使用 Autolayout ,请检查您的约束(cell.contentView.constraints
)。如果您使用 UIViewAutoresizing ,请为contentView的所有子视图设置正确的autoresizingMasks(cell.contentView.autoresizingMask
)。您也可以尝试关闭autoResizing(cell.contentView.autoresizesSubviews = NO
),但这可能会导致错误的结果。
另外我想知道,为什么单元格backgroundImage中有箭头?可能你也应该使用其他图像。
答案 1 :(得分:2)
您可以在展开前创建两个自定义单元格,为扩展单元格创建另一个自定义单元格
当您触摸单元格存储所选单元格indexpath
并在重新加载表格时,在cellForRowAtIndexPath:
中检查indexpath
并相应地加载单元格。
答案 2 :(得分:1)
尝试将名称和电话号码标签的UIViewAutoresizing
掩码(或内容中的任何其他UI元素)设置为固定的上边距。
答案 3 :(得分:0)
谢谢大家的答案,但没有任何帮助。 起初我使用了内置的单元格项目(imageView,textLabel,detailTextLabel),这些单元格随着单元格的过渡而变化。 当我将自定义子视图(带有已定义的帧)添加到它工作的单元格时。
答案 4 :(得分: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]]];