不遵守自动布局底部间距约束
Posted
技术标签:
【中文标题】不遵守自动布局底部间距约束【英文标题】:Autolayout bottom spacing constraint is not obeyed 【发布时间】:2015-04-10 01:22:24 【问题描述】:我有一个 UIButton 和一个 UILabel 限制为距 Superview 底部的标准距离。在 iPad 上运行良好,但在较小的 iPhone 屏幕上,当其他元素占用太多空间时,这些视图会被推离屏幕边缘,尽管它们必须与底部保持标准距离。为什么会这样?
我希望四个矩形的大小缩小,以便“返回”和“问题”标签仍然有空间与底部保持标准距离。四个矩形可以通过以相同的比例收缩来保持纵横比和相等的宽度/高度。我对它们需要等于或大于某个大小没有任何限制。我也尝试降低他们的内容压缩阻力优先级。
配置:
(我还尝试在“返回”和左下角矩形之间的顶部间距中使用“相等”和“
它在 iPhone 6 和 iPhone 6+ 上的外观 - 底部的标签被切断:
【问题讨论】:
你从左边缘到视图到右边缘的水平约束,给它们一个固定的宽度(相对于任何看到的大小),然后长宽比固定高度。 但是如果左右边缘的水平约束也设置为 >= 标准间距,这应该允许它们缩小... 【参考方案1】:您是否尝试降低这四个按钮的高度限制的优先级? 例如像这样,尝试将它们设置为 750
【讨论】:
感谢您的帮助。这些按钮没有任何高度限制,它们只是设置为与其他按钮相同的宽度和高度,但没有所需的大小 所以你没有为视图上的任何元素添加任何高度约束??如果您没有添加高度宽度约束,则自动布局可能不起作用 如果您不介意,您可以在故事板文件中使用此视图设置创建一个简单的项目,然后分享给我。我可以帮你调查一下:D【参考方案2】:您可以通过一些更改和添加来完成这项工作。给前 2 个矩形和父视图之间的前导和尾随约束一个较低的优先级(我使用了 749),但仍将它们保持为“相等”。如果可能,这将使它们与边缘保持标准距离,但如果垂直空间与纵横比相结合,则允许它们具有更大的间距。这样做的问题在于,由于不再需要它们,所以当这些约束需要拉伸时,没有什么说它们必须同样拉伸;因此,我们需要一些方法来保持矩形居中。因此,代替左右顶部矩形之间的间距约束,添加一个小视图(我使用 8x8),其中一个矩形具有 centerY 约束,两个矩形具有零恒定间距约束。给这个视图一个centerX约束到superview;这个结构将为您提供与之前相同的矩形间距,但如果需要容纳垂直空间,则会将它们保持在超级视图的中心,同时允许它们缩小宽度(和高度以保持纵横比)。
【讨论】:
关于使用居中的小视图以使两侧的两个项目保持居中的好建议(这似乎比使用边缘上的两个隐藏视图简单得多,如 CS 193P 和其他教程中所示)。 对于我来说,仍然主要是触摸&开始/试验&错误,试图让自动布局场景在每台设备上看起来都“接近正确”。更多时候,我最终会为常规高度大小类和紧凑高度创建不同的常量,以使约束在不同设备上正常运行。以上是关于不遵守自动布局底部间距约束的主要内容,如果未能解决你的问题,请参考以下文章
UIView 不遵守 UIScrollView 中的自动布局约束