1

对如何解决这个问题没有任何想法....

好的。UITableViewCell这是我使用三种不同的Child Views的习惯。你可以看到不同的颜色。

在此处输入图像描述

在这里,我的第二个子视图的高度是动态的,并在运行时计算。我 用来设置高度。-heightForRowAtIndexPathUITableViewCell

我尝试过的:

我设置了子视图的出口,然后在中 -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;

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

问题 :

看,截图。

有什么建议么 ?

4

2 回答 2

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;

}

于 2013-03-06T12:38:26.827 回答
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; }

于 2013-03-06T12:08:27.733 回答