NSLayoutConstraint 等高不等分
Posted
技术标签:
【中文标题】NSLayoutConstraint 等高不等分【英文标题】:NSLayoutConstraint equal height does not divide equally 【发布时间】:2014-12-16 17:00:51 【问题描述】:在我的应用中,我需要放置一些盒子,并确保前两个平分。
导航栏+状态栏共64点。 将 60 点的固定高度限制设置为欢迎框。 将 145 点的固定高度约束设置为棕色框。 Tabbar 保持 50 点。
剩下的417点的高度应该一分为二。 绿色和红色框本身有其滚动视图。 Scrollviews 具有与其父视图相同的高度、顶部、底部、前导和尾随约束的布局约束。 布局完成后,我检查了红色框的高度为 208.66667,绿色框的高度为 208.3333。 但是每个滚动视图的高度为 208.6667。所以绿色框的滚动视图变得可以垂直滚动,因为它的高度(contentSize高度)大于它的父视图。
【问题讨论】:
问题是什么?如果您担心 208.6- 和 208.3- 之间的差异,那么与 208.5 相差不到一个点,大约是一个点的 20%。没有人会注意到。出于所有实际目的,它们的高度相同。实际上,您是在 iPhone 6+ 上进行测试吗?这可以解释除以三。 我认为你有一些底部垂直间距限制,这会导致这个问题。您可以分享 nib 或故事板文件以进一步调查吗? 标签栏高度应该是49,所以两个高度都是209,见dropbox.com/s/rwx18d1yvfhose0/Main.storyboard?dl=0 如果您对您的反对票发表评论,我们将不胜感激 【参考方案1】:你有一些选择。
-
将滚动视图的内容调整为 208 像素并忽略剩余的部分像素。
如果您不需要滚动视图,请禁用滚动条。
向其他区域之一添加像素,使红色和绿色视图的高度相等。
将视图调整为您想要的确切像素尺寸,而不仅仅是“等高”约束。
【讨论】:
感谢您的回答。由于一个代码处理不同的设备,我用这种方式处理不同的 iPhone。我无法禁用水平滚动,但我可以禁用垂直滚动。以上是关于NSLayoutConstraint 等高不等分的主要内容,如果未能解决你的问题,请参考以下文章