具有自定义视图的可扩展和可折叠UITableViewCell

时间:2013-03-06 10:58:56

标签: iphone uiview uitableview ios6

没有任何关于如何解决这个问题的想法......

确定。这是我的自定义UITableViewCell,其中包含三个不同的子视图。你可以看到不同的颜色。

enter image description here

此处,我的第二个子视图高度是动态的,并在运行时计算。我使用-heightForRowAtIndexPath来设置UITableViewCell的高度。

我尝试了什么:

我设置了子视图的出口,然后在-heightForRowAtIndexPath中,我使用了此代码......

middleView.frame = CGRectMake(0, 60.0, 750.0, size);
footerView.frame = CGRectMake(0, size + 60.0, 750.0, 50.0);

其中,size =动态计算中间视图的高度。

更新:

我也试过像这样大小的静态值......

 middleView.frame = CGRectMake(0, 60.0, 750.0, 350.0);
 footerView.frame = CGRectMake(0, 350.0 + 60.0, 750.0, 50.0);

但是根本没有运气......

尺寸由此计算:size = (elements * 30) + 50;

其中,elements =数组中元素的数量。

问题:

看一下截图。

有什么建议吗?

2 个答案:

答案 0 :(得分:1)

使用以下方法设置中间视图和页脚视图框架而不是heightForRowAtIndexPath:

并保留上面indra Mohan给出的另一种方法。

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath       *)indexPath
{   
NSString * cellIdentifier = @"TableViewCellIdentifier"  ;
InAppTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

cell.delegate = self;
float size = [self heightForMiddleViewAtIndexPath: indexPath]
cell.middleView.frame = CGRectMake(0, 60.0, 750.0, size);
cell.footerView.frame = CGRectMake(0, size + 60.0, 750.0, 50.0);
return cell;

}

答案 1 :(得分:0)

要解决这个问题,你必须做两件事

  1. 为您的所有子视图设置正确的autoresizingMask

        headerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
    middleView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
    footerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin; 

  2. 从UITableViewDelegate方法返回适当的高度

    
    
    • (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { return [self heightForMiddleViewAtIndexPath: indexPath] + footerViewHeight + headerViewheight; }

    • (CGFloat)heightForMiddleViewAtIndexPath:(NSIndexPath *)indexPath { \ do some height calculation; }