iOS 8:如何在自由格式的ViewController中以编程方式为UITableview设置高度

时间:2016-08-12 07:03:59

标签: ios iphone swift uitableview

iOS中的新秀。 我有一个Freeform ViewController,它有一个UIImageView和 UITableView就在其中。

我面临的问题是当我尝试滚动tableview时 由于自由形态的高度,一些物品保持隐藏状态 视图 - 控制。

我尝试使用以下代码以编程方式设置UItableview的高度 根据屏幕的大小。

    let screenSize: CGRect = UIScreen.mainScreen().bounds
    tableview.frame = CGRectMake(0,imageview.frame.height, 280,  (screenSize.height -imageview.frame.height))

上面的代码无法调整tableview的大小。

有没有其他方法可以在运行时或设置UITableview大小 在故事板中。

解决方案

在为两个视图指定translatesAutoresizingMaskIntoConstraints = true后,使用自定义高度和宽度布局了我的两个视图后,我解决了这个问题。我根据我的设计和应用程序要求做了。

3 个答案:

答案 0 :(得分:3)

如果您使用自动布局或约束,则必须

tableview.translatesAutoresizingMaskIntoConstraints = true

在应用新框架之前,新框架不会更新,因为它会因自动布局和约束而过度使用。

编辑:

1-如果您在故事板中的视图控制器中启用了[调整滚动视图插入],请将其禁用,然后进行测试和查看。

2-你以编程方式创建imageView吗?或者从界面构建器,你有约束吗?

3-您是否知道状态栏有高度,您还必须补偿它?

你使用导航栏吗?

答案 1 :(得分:1)

UITableViewCell身高有一个委托函数。

在这里指定特定单元格的indexPath并返回它的高度

(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
    if(indexPath.section == yourSection && indexPath.row == yourRow) {
        return 140.0; //return height for required row
    }
    // "Else"
    return someDefaultHeight;
}

答案 2 :(得分:0)

不要以编程方式设置Tableview高度。

只做一件事

采用Top,Bottom,Leading,Trailing约束并将常量值设置为0

将用户图像视图添加到tableview标题中。