在点击UITableViewCell中的按钮时调整其大小

时间:2013-07-14 19:22:17

标签: ios uitableview

我想在UITableViewCell中放一个按钮,它应该像这样工作: 当我点击按钮时,单元格应显示单元格的完整内容,否则仅显示其部分内容。显示完整内容后,UITableViewCell的高度将更高。基本上它应该看起来像iOS的应用程序更新中的样式。我怎么能这样做?

我试过

[tableView beginUpdates];
[tableView endUpdates];

但这只会改变单元格的大小并将内容放在单元格的中间。我希望最初在单元格上可见的部分保持不变,并且在单元格的高度变高之后才显示更多内容。

我的自定义UITableViewCell的init方法:

- (id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        self.backgroundColor = [UIColor clearColor];

        self.opaque = NO;
        self.textLabel.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin;
        self.detailTextLabel.autoresizingMask = UIViewAutoresizingFlexibleBottomMargin;
    }
    return self;
}

2 个答案:

答案 0 :(得分:1)

如果要更改表格视图单元格的高度,它不仅需要更改表格视图单元格,还需要更改表格视图为其分配的空间量。从tableView:heightForRowAtIndexPath:返回所需的大小并重新加载该行(例如:via reloadRowsAtIndexPaths:withRowAnimation:)。

答案 1 :(得分:0)

尝试在UITableViewCell中设置子视图的autoResizingMask以获得所需的效果。

UIViewAutoresizingFlexibleBottomMargin会将视图固定在顶部。

UIViewAutoresizingFlexibleTopMargin会将视图固定在底部。

UIViewAutoresizingNone会保持中心而不会拉伸。

当你的细胞改变它的高度时,

UIViewAutoresizingFlexibleHeight会使视图伸展得更高/更短。

对于每个子视图,弄清楚您希望它如何表现并相应地设置值。