Collectionview 的底部约束未在运行时更新

Posted

技术标签:

【中文标题】Collectionview 的底部约束未在运行时更新【英文标题】:Collectionview's bottom constraints not updated in runtime 【发布时间】:2016-11-24 06:01:18 【问题描述】:

我正在使用带有 FlowLayout 的 collectionView。请找到以下图片。

图中,白色区域是collectionView。在运行时,红色视图可能会根据条件隐藏。所以 collectionView 将不得不向上移动。那不是问题。这按预期工作。但是当collectionView向上移动时,通过20像素的垂直间距约束连接到collectionView的'All Months'按钮不会向上移动。

我的要求是“所有月份”按钮必须在 collectionView 旁边 20 像素,即使 collectionView 在运行时更改其 y 位置或高度也是如此。

编辑: 我已将 ScrollView 的 contentView 向上移动,以向您展示“All Months”和“Next”按钮的约束。请检查以下图片

【问题讨论】:

ALL months 的其他限制是什么? 您能告诉我们添加到所有月份按钮的约束吗? 【参考方案1】:

在查看和编辑您的项目后,我正在更改整个答案,这里是我从您的项目中分叉的编辑链接:

https://github.com/subhajitregor/AutoLayoutTest

我改变的东西:

    滚动视图中的内容视图,其高度限制优先级已更改为 250(低优先级),因为如果您的橙色视图被隐藏,它不会变短。

    在你的viewWillAppear()中我添加了self.view.layoutIfNeeded()并注释掉了viewDidLayoutSubviews()的内部代码(你可以根据需要重新打开代码)

我已根据需要检查了它及其工作。请检查我提供的链接中的项目并告诉我。

【讨论】:

它不工作。它抛出不等式约束歧义错误 您能否提供一个带有该特定视图滚轮的演示项目,然后我可以为您做。只需在 git 中上传或给我一个链接以下载演示项目,只需在情节提要中使用该控制器即可。 我已经上传了一个示例项目。请在此网址github.com/ManojEllappan/AutoLayoutTest.git 中找到相同的内容。我的要求是,如果我在第一页选择 Single Employee,则员工详细信息页面(橙色视图)应显示为故事板中的内容。如果我选择组员工,橙色视图应该被隐藏,其他视图应该相应地向上移动。 好的。谢谢。 当您旋转设备时,collectionview 的高度是恒定的,并且“All Months”按钮保持其“20px”位置以实现这一点,包括 override func willRotate(to toInterfaceOrientation: UIInterfaceOrientation, duration: TimeInterval) if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) collectionViewHeight.constant = 220; else collectionViewHeight.constant = 120; 在您的视图控制器中,我已经更新了代码git 请参考它以了解它是如何工作的

以上是关于Collectionview 的底部约束未在运行时更新的主要内容,如果未能解决你的问题,请参考以下文章

CollectionView 约束打破

TableView 单元格高度不根据第一次重新加载时的 collectionview 高度

滚动到collectionView的底部不起作用

以编程方式从集合视图下方设置标签约束

应用程序在后台运行时重置约束 - iOS 13

自动布局我可以将 CenterY 与顶部和底部约束结合起来吗?