首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIContainerView内容高度(嵌入式UITableViewController)

UIContainerView内容高度(嵌入式UITableViewController)
EN

Stack Overflow用户
提问于 2015-02-09 14:25:24
回答 2查看 959关注 0票数 1

我目前在Interface的UITableViewController中嵌入了一个UIContainerView。是否有方法将UIContainerView的高度设置为内容的高度(使用原型单元格)?基本上,我想要的是在我的UIScrollView周围设置一个UIContainerView,并将一些AutoLayout规则设置到我的UIContainerView中,这样就可以从里面的单元格数计算出高度,并且父UIScrollView相应地调整它的滚动区域。

编辑

感谢这些伟大的答案,最后使用以下代码更改了帧高:

代码语言:javascript
复制
    alarmsTableViewController.view.layoutIfNeeded()
    println(alarmsTableViewController.tableView.contentSize.height)
    alarmsContainerView.frame.size.height = alarmsTableViewController.tableView.contentSize.height
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-09 17:34:25

编程干预是必需的: UITableViews当然是UIScrollViews,嵌套的滚动视图无法在AutoLayout中调整自身大小。这是一个合理的含糊不清,因为AutoLayout将不知道如何使框架更小,需要更多的滚动或帧更大,更少的滚动。在您的情况下,您希望后者没有滚动。

解决这一问题的最简单方法是为TableView (或其容器视图)的高度创建一个约束。这将作用于tableView的框架,如果设置为任何方向的内容大小(仅在表视图中垂直),滚动视图将不会滚动。最好在包含tableView的视图中添加/修改它。然后访问表视图的contentSize属性。实际代码非常简单:

代码语言:javascript
复制
-(void)updateViewConstraints {
    self.tableViewHeightLayoutConstraint.constant = self.tableviewInMyScrollView.contentSize.height;
    [super updateViewConstraints];
}

如果滚动视图中的其他内容在AutoLayout引擎运行时都具有固定的高度和宽度,这应该会自动调整其内容的滚动视图大小。

票数 1
EN

Stack Overflow用户

发布于 2015-02-09 14:55:29

我在我的项目中所做的是在-(void)updateViewConstraints中对ViewController进行更新,这是一个由IBOutlet给出的约束,这取决于tableView中单元格的数量。例如:

代码语言:javascript
复制
-(void)updateViewConstraints{
   float newHeigh = ([self.array count] + 1) * 84;
   self.topViewHeightConstraint.constant = newHeigh + 540;
   [super updateViewConstraints];
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28411983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档