OStack程序员社区-中国程序员成长平台

标题: ios - 自动布局降低某些 View 的高度 [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 18:09
标题: ios - 自动布局降低某些 View 的高度

我有以下看法: enter image description here

对于 iPhone 4 尺寸的屏幕,我想保持灰色顶部和绿色下部按钮的大小相同,分别固定在顶部和底部。中间的按钮网格应缩小尺寸以适应新的显示。

由于 View 尺寸小了 88 像素(548 - 460 = 88),并且有 4 行按钮,我会以编程方式将每个按钮减少 22 像素并将其移动到位。

但如果可能的话,我想通过自动布局来实现。

如何指定约束以保持与顶部和底部的距离相同,并仅降低 View 的高度?

我已经将它们全部固定在顶部和底部,但这只会导致:

enter image description here

任何帮助,不胜感激!



Best Answer-推荐答案


您可以使用自动布局来做到这一点。基本上,您应该将灰色标题和调用按钮页脚锚定到 super View 的顶部和底部(分别),并将每个按钮锚定到它的邻居。然后指定每个按钮应与第一个按钮具有相同的高度。

这是约束的可视化格式语言(我认为这比试图解释约束要清楚一些)。 headerView 是顶部的灰色条,footerView 是包含您的绿色按钮的 View ,并且这些按钮已正确命名。

V:|-[headerView]-0-[buttonOne]-0-[buttonFour(==buttonOne)]-0-[buttonSeven(==buttonOne)]-[buttonPlus(==buttonOne@800)]-0-[footerView]-|

请注意,buttonPlus 的高度约束的优先级较低。这是因为您的页眉和页脚 View 之间的空间可能不会在按钮之间平均分配。将优先级设置为低于“必需”(优先级 == 1000)允许加号按钮比一个按钮略短或略高,但自动布局仍会尝试使其尽可能接近。

水平尺寸的创建类似于垂直尺寸。请注意,这里 buttonTwo 的大小可以与其他大小稍有不同,以防水平空间不均等。

H:|-0-[buttonOne]-0-[buttonTwo(==buttonOne@800)]-0-[buttonThree(==buttonOne)]-0-|

一个 View 的高度/宽度等于另一个 View 的计算成本很高,并且可能需要多次传递。最好只对第一列按钮设置上述约束,然后约束其他列,使每个按钮的顶部和底部与其所在行的第一个按钮对齐。您可以通过在为每一行创建水平约束时传递 NSLayoutFormatAlignAllTop|NSLayoutFormatAlignAllBottom 作为选项参数来做到这一点,并且 NSLayoutFormatAlignAllLeft| NSLayoutFormatAlignAllRight 创建垂直约束时。

编辑:这仍然可以通过 IB 完成。

关于ios - 自动布局降低某些 View 的高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21291884/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4