iOS自动布局:如何动态均匀地排列项目?

Posted

技术标签:

【中文标题】iOS自动布局:如何动态均匀地排列项目?【英文标题】:iOS auto layout: how to dynamically evenly space items? 【发布时间】:2013-09-28 06:02:26 【问题描述】:

我需要平均间隔X个项目,项目的容器可以有动态宽度,我希望第一个和最后一个项目粘在左右边缘:

|-0-[item1]-[...]-[itemX]-0-|

这样无论容器多宽,item 总是均匀分布的,如何通过布局约束来实现呢?

编辑: 我在想,如果我可以将 item1 和 item2 设置为与 item2 和 item3 等间距相同,那么这应该很容易,但我不认为我可以在没有恒定宽度的情况下设置它?

【问题讨论】:

你试过你在最后一句中的建议了吗? Evenly space multiple views within a container view的可能重复 和***.com/questions/13680303/… 我认为另一个问题不应该因为重复而关闭,因为引用的重复处理的是垂直而不是水平间距。在这种情况下,我相信使用自动布局而不是框架的令人满意的解决方案仍然很出色 我有一个很好的解决方案,使用我在 [这里][1] [1] 发布的 IB:***.com/a/25898949/951349 【参考方案1】:

您不能将空格设置为具有相同的宽度,但您可以使用“间隔”视图。

在所有视图之间放置一个不可见的视图,您可以像这样设置格式...

@"|[view1][spacer1][view2(==view1)][spacer2(==spacer1)]...[spacerN(==spacer1)][viewN]|"

这将使所有视图之间具有相等的间距。

确保将间隔视图设置为 alpha 0 或隐藏或背景颜色清除。

【讨论】:

这样的问题是,当容器的大小改变时,垫片的大小也需要改变? 不,如果容器的大小发生变化,这将起作用。您所做的只是说它们彼此大小相同。你没有给他们一个固定的大小。这就是它首先起作用的原因。

以上是关于iOS自动布局:如何动态均匀地排列项目?的主要内容,如果未能解决你的问题,请参考以下文章

iOS:自动布局动态数量的项目

自动布局:在 TableViewCell 中排列两个 UILabel

动态单元高度自动布局 IOS

iOS scrollView自动布局技巧之二 - 纯代码自动布局

使用自动布局在条中的项目之间排列水平空间

自动布局中的 UIButton 动态宽度