我需要在水平UIStackView
中放置X个按钮,它位于UIScrollView
内。要求是按钮应均匀分布在堆栈视图中,随着按钮数量的增加,我应该减少间距以使它们适合屏幕的宽度,但是当间距为#时,最小间距为&# 39;减小并达到最小间距,按钮可以延伸超出屏幕的宽度。
例如,当我有三个按钮时,我想将它们布局为
|B1 B2 B3|
当我有五个按钮时(假设它们仍能以较小的间距适合屏幕的宽度):
|B1 B2 B3 B4 B5|
但是当我有六个按钮并且必须保持最小间距时,我想堆叠视图以在其容器UIScrollView
内滚动。
查看UIStackView
的doco,属性spacing
是:
" spacing属性确定排列视图之间的最小间距。"
所以我可以将它用于最小间距要求,但对于我有三个项目的第一个例子,我想我需要定义堆栈视图的大小和位置,如doco所述:< / p>
&#34;沿着轴定义堆栈的大小。在这种情况下,将堆栈的两个边沿其轴线固定到其超视图,从而在该维度中定义堆栈视图的大小。您还需要固定其他边之一以定义堆栈视图的位置。堆栈视图沿其轴定义和定位其内容以填充定义的空间;但是,未固定的边缘会根据最大排列视图的大小自由移动。&#34;
但现在的问题是:
谢谢!
答案 0 :(得分:1)
这实际上很容易。
对于autolayout中的任何项...
(如果它是一个堆栈视图,或者只是一个普通的视图,它没有任何区别。所以首先,教你自己使用普通视图来做这件事。)
你所说的是你希望视图肯定是,和superview一样宽。但是,扩大范围是可以的。
你所做的只是你的榜样, - 附上左边缘 - 不要连接右边缘 - 设置宽度相等,但事实上,选择“&gt; =”选项。
这将在您的堆栈视图情况下完美运行。
(当然,只需在堆栈视图中选择“填充”:这样,在只有少数几个的情况下,它会“将它们分开”。请注意,当然显然,你必须加入滚动视图到项目中,如果这是你想要的“右边”。)