我需要在水平 UIStackView
中有 X 个按钮,它位于 UIScrollView
中。要求是按钮应该均匀分布在堆栈 View 中,并且随着按钮数量的增加我应该减少间距以使它们适合屏幕的宽度,但是有一个最小间距,当间距减小并达到最小间距,按钮可以超出屏幕宽度。
例如,当我有三个按钮时,我想像这样布局它们
|B1 B2 B3|
当我有五个按钮时(假设它们仍然可以以较小的间距适应屏幕的宽度):
|B1 B2 B3 B4 B5|
但是当我有六个按钮并且必须保持最小间距时,我想堆叠 View 以在其容器 UIScrollView
内滚动。
查看UIStackView
的doco,属性spacing
为:
“spacing 属性决定排列 View 之间的最小间距。”
所以我可以将它用于最小间距要求,但是对于我有三个项目的第一个示例,我想我需要定义堆栈 View 的大小和位置,如 doco 中所述:
“定义堆栈沿其轴的大小。在这种情况下,将堆栈沿其轴的两个边缘固定到其父 View ,定义该维度中堆栈 View 的大小。您还需要固定其他边缘之一以定义堆栈 View 的位置。堆栈 View 会调整其内容的大小并沿其轴定位其内容以填充定义的空间;但是,未固定的边缘会根据最大排列 View 的大小自由移动。”
但是现在的问题是:
- 如何布局三个按钮,一个在左边缘,一个在中间,一个在右边缘?
- 当我有更多无法适应屏幕宽度的项目时,我如何确定我是否应该不将堆栈 View 的右边缘固定到其父 View 的右侧,因此它的大小可以成长吗?
谢谢!
最佳答案
这其实很简单。
对于自动布局中的任何项目...
(如果它是一个堆栈 View ,或者只是一个普通 View ,那根本没有区别。所以首先,教你自己使用普通 View 来做到这一点。)
您的意思是您希望 View 肯定与父 View 一样宽。但是,再宽一点也没关系。
你所做的一切都在你的例子中, - 附加左边缘 - 不要附加右边缘 - 设置宽度相等,但实际上,选择“>=”选项。
就这么简单!
这将在您的堆栈 View 情况下完美运行。
(当然,只需在堆栈 View 上选择“填充”:这样它会在只有少数的情况下“将它们隔开”。请注意,当然很明显,您必须合并项目的 ScrollView ,如果这是您在“右侧关闭”时想要的。)
关于ios - UIStackView:控制间距,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43243384/