约束的奇怪行为,iOS8
Posted
技术标签:
【中文标题】约束的奇怪行为,iOS8【英文标题】:Strange behavior of constraints, iOS8 【发布时间】:2015-05-11 10:29:05 【问题描述】:我在 superview 上有两个根视图。
我从代码中添加的所有视图和约束。顶视图有 H:|-0-[view]-0-|。相同的 vfl 代码有底视图。接下来,俯视图从上到上,从下到上第二个视图,第二个底部到底部。代码是V:|-0-[topView]-0-[secondView]-0-|。
第二个视图具有固有高度,因此两个视图的高度取决于此值。当我更改底视图高度和动画 layoutIfNeed 对我来说一切正常。 接下来,底视图有一些子视图。底部是简单的视图容器,顶部是按钮。它们都连接到左/右,如 H:|-0-[view]-0-|。底部视图也具有固有高度,因此它们像外部视图一样垂直连接,没有(!)将按钮附加到超级视图的顶部(V:[button]-0-[secondView]-0-|)。第二个视图是从下到下附加的,但是当我动画改变这个容器的高度时,它的子视图在 ios 8 上排在首位。
视图层次结构是
约束:
H:|-0-[topView]-0-|
H:|-0-[bottomView]-0-|
V:|-0-[topView]-0-[bottomView(110)]-0-|
H:|-0-[buttonBackCamera]-0-|
H:|-0-[grayView]-0-|
V:[buttonBackCamera]-0-[grayView(85)]-0-| //here is constraint, that MUST attach grayView to bottom.
在调试时,我注意到,该约束已附加,处于活动状态并且它必须工作,但是 :( .
对此有什么想法吗?
更新
我在 iOS 8.3 上检查过,一切正常。
【问题讨论】:
您的 cmets 中的secondView
是什么?那是您图表中的底部视图吗?并且是 secondView / bottom view 的按钮子视图,还是它们处于同一级别?您在控制台中看到任何约束警告吗?
视图层次结构类似于monosnap.com/image/kxXIv3pPlmhWLWcIrCsPIBeFIPuVmw
控制台中没有任何警告
您可能应该使用该层次结构更新您的问题并提及您在那里的限制,目前有点难以理解
您是否将translatesAutoresizingMaskIntoConstraints
设置为NO
?否则,自动调整大小的蒙版将创建额外的约束。您是使用frame
还是通过更改constant
上的constraint
来设置高度动画?
【参考方案1】:
确保底部视图包含从Leading to superview、Trailing to Superview 和Bottom to Bottom Guide 的约束。 如果您仍然遇到任何问题,请继续,
-(void)viewWillLayoutSubviews
[self.view layoutIfneeded];
【讨论】:
我已经检查过了。我试图布局超级视图和底部子视图。 layoutIfNeeded 后底部子视图没有布局,所以我尝试使用 layoutSubviews。反正没有结果。底部子视图附加到它的超级视图底部,它不附加到底部指南 您是否提供了任何顶部约束..? 我不明白你的问题。你能改写一下吗?你说的是什么层次,什么观点? 你能分享一下约束的截图吗? 我正在使用 vfl。没有 IB。【参考方案2】:我认为我没有完全解决问题,但我建议您检查所选的尺寸等级以及每个启用的约束的尺寸等级。
【讨论】:
尺码等级被禁用。所有约束都是从代码中添加的。以上是关于约束的奇怪行为,iOS8的主要内容,如果未能解决你的问题,请参考以下文章
ios8 swift:我如何访问/编辑/删除默认/私有 inputAccessoryView 高度约束'_UIKBAutolayoutHeightConstraint'