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 等高不等分的主要内容,如果未能解决你的问题,请参考以下文章

瀑布流布局(等宽不等高)

源码-0203-06-自定义非等高cell-xib

如何确定山脊线

如何将 swift NSLayoutConstraint activateConstraints 转换为目标 c?

如何用excel做等高线图

以大约相等的计算成本将不等大小的 pandas/numpy 数组分箱