没有任何关于如何解决这个问题的想法......
确定。这是我的自定义UITableViewCell
,其中包含三个不同的子视图。你可以看到不同的颜色。
此处,我的第二个子视图的高度是动态的,并在运行时计算。我使用-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 =数组中元素的数量。
问题:
看一下截图。
有什么建议吗?
答案 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)
要解决这个问题,你必须做两件事
为您的所有子视图设置正确的autoresizingMask
headerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleBottomMargin;
middleView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
footerView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;
从UITableViewDelegate方法返回适当的高度
(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
return [self heightForMiddleViewAtIndexPath: indexPath] + footerViewHeight + headerViewheight;
}
(CGFloat)heightForMiddleViewAtIndexPath:(NSIndexPath *)indexPath
{
\ do some height calculation;
}