带有 Header-TableView-Footer 和 AutoLayout 的弹出视图不起作用

Posted

技术标签:

【中文标题】带有 Header-TableView-Footer 和 AutoLayout 的弹出视图不起作用【英文标题】:Popup View with Header-TableView-Footer and AutoLayout Not Working 【发布时间】:2017-01-19 16:47:35 【问题描述】:

上下文

我有一个包含表格视图的弹出视图。我希望弹出视图小于屏幕的整个高度,但希望 tableview 可以根据它的行数进行缩放。 (如果表格视图包含 2 行,那么它将适合这 2 行并且不会滚动,如果表格视图有 30 行,它将在屏幕高度处达到最大值并允许滚动)。

查看层次结构

- viewContainer (clear background, whole view) -- viewPopUp (pop up container) --- labelHeader --- tableView --- buttonOK

约束

viewPopUp.centerY = viewContainer.centerY viewPopUp.centerX = viewContainer.centerX viewPopUp.leadingSpaceTo superView = 32 @750 viewPopUp.trailingSpaceTo superView = 32 @750 viewPopUp.width &lt= 300 viewPopUp.height &lt= 0.8 * viewContainer.height labelHeader.topSpaceTo superView = 0 labelHeader.leadingSpaceTo superView = 0 labelHeader.trailingSpaceTo superView = 0 labelHeader.bottomSpaceTo tableView = 0 labelHeader.height = 33 tableView.topSpaceTo labelHeader = 0 tableView.leadingSpaceTo superView = 0 tableView.trailingSpaceTo superView = 0 tableView.bottomSpaceTo buttonOk = 0 tableView.height &gt= 0 tableView.height = 0 @200 buttonOk.topSpaceTo tableView = 0 buttonOK.leadingSpaceTo superView = 0 buttonOK.trailingSpaceTo superView = 0 buttonOk.bottomSpaceTo superview = 0 buttonOK.height = 35

我的问题

在我的 UIViewController 的viewDidLoad 中,我确切地知道需要在这个 tableView 中表示多少行,并且我想添加一个额外的约束来让 tableView 扩展到这个数字,如上面的上下文中所述。

我试过tableView.height = count * rowHeight @500 但这不会更新视图。我不确定我是不是打电话给needsUpdateConstraintsneedsUpdateLayout 等。

如果我根据需要添加上述约束,那么它将按预期更新 tableView,但我收到约束警告,我相信如果它将 tableView 推到屏幕大小之外,这将中断,这就是我想将其添加为的原因一个非必需的约束,因此它会在达到屏幕高度后下降。

有人对我如何达到这个预期结果有任何想法吗?

谢谢!

【问题讨论】:

【参考方案1】:

假设行的高度始终相同,您可以计算表格的高度,根据视图高度检查它并将该值设置为添加到表格视图的引用高度约束。 代码看起来像:

//calculate the height
var tableHeight = numberOfRows * rowHeight
if tableheight > maxHeight 
tableHeight = maxHeight

self.tableHeightConstraint.constant = tableHeight //this constraint should be a iboutlet
self.view.layoutIfNeeded()

希望对你有帮助。

【讨论】:

以上是关于带有 Header-TableView-Footer 和 AutoLayout 的弹出视图不起作用的主要内容,如果未能解决你的问题,请参考以下文章

带有和不带有聚合的 sql 查询

如何翻转正面带有标签而背面带有另一个标签的视图 - 参见图片

CakePHP 如何处理带有/不带有 'id' 字段的 HABTM 表?

带有滚动的 Div 和带有绝对位置的内容

带有 RecyclerView 的 DialogFragment 比带有 Recyclerview 的 Fragment 慢

访问控制允许带有和不带有 www 的来源