UITableViewCell高度基于可用的屏幕空间

时间:2014-09-17 06:22:08

标签: ios objective-c uitableview uikit

我想为我的UITableView创建一个布局,使其分为两部分:  第一部分有3排标准高度(44px), 第二部分有一行,其中包含UITextView,它完全填满了这个单元格。棘手的部分是我想将此textView的单元格行调整到可见tableview区域的高度,以便文本视图占据屏幕上的剩余视图。我如何在

中找到答案

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

剩下的高度是什么样的?我之前根据可用的两种iPhone屏幕尺寸(480和568)进行了硬编码假设,但是使用新的iPhone6和iPhone 6+屏幕,我不想使用任何假设值来计算它。

2 个答案:

答案 0 :(得分:3)

您已经在tableView.bounds.size.height处拥有表格视图的高度,您只需要从中减去第一部分的高度。所以

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
    if (indexPath.section == 0)
    {
        return 44;
    }

    return tableView.bounds.size.height - 44 * 3;
}

使用标题,根据其行为方式,您可以使用rectForHeaderInSection:rectForSection:来获得高度

答案 1 :(得分:0)

如果您确定永远不会更改行数,则可以从故事板中执行此静态操作。 您可以根据需要插入原型单元格。通过自动布局或自动调整,您可以将单元格设置为静态或随屏幕大小增加。

但是如果你真的想以编程方式进行编程,你可以通过self.view.bounds.size.height获取屏幕高度,取出3个单元格和2个标题,剩下的就是你的UITextView单元格。