iOS-如何将大小不同的未知数量的子视图水平居中放置。
我遇到了一个问题,我相信你们中的一个人可以帮我解决。 我正在用Swift3开发一个iOS应用程序,我试图创建如下内容:iOS-如何将大小不同的未知数量的子视图水平居中放置。,ios,swift,autolayout,nslayoutconstraint,uistackview,Ios,Swift,Autolayout,Nslayoutconstraint,Uistackview,我遇到了一个问题,我相信你们中的一个人可以帮我解决。 我正在用Swift3开发一个iOS应用程序,我试图创建如下内容: 屏幕截图仅显示我的UIViewcontroller的一部分。剩余的空间充满了不属于问题一部分的其他观点。 正如您所看到的,我的子视图(图标)的大小和位置取决于给定的图标数量(不超过8个)。如果存在超过5个图标,则应创建第二行并减小图标的大小以适应空间。我的观点应该始终居中,这意味着它们均匀地分布在左侧和右侧 到目前为止,我尝试的是: 我创建了一个水平StackView,并
屏幕截图仅显示我的
UIViewcontroller
的一部分。剩余的空间充满了不属于问题一部分的其他观点。
正如您所看到的,我的子视图(图标)的大小和位置取决于给定的图标数量(不超过8个)。如果存在超过5个图标,则应创建第二行并减小图标的大小以适应空间。我的观点应该始终居中,这意味着它们均匀地分布在左侧和右侧
到目前为止,我尝试的是:
- 我创建了一个水平
,并尝试通过编程方式填充它,但对于超过5个视图,这并没有解决问题StackView
- 尝试使用自动布局约束设置某些视图,但无法解决不同大小和位置的问题
谢谢你的回答。非常感谢您的反馈。UICollectionView是一个更好的选择 它不是UIStackView就是UICollectionView,因为它们都处理子视图的分布。因为最多有8个图标,所以我只使用UIStackView并垂直堆叠两个水平StackView。您在stackview 1中放置项目1-5,在stackview 2中放置项目6-8。如果需要两行具有相同的分布,则需要放置水平约束等于imageView宽度的空视图,以使第二个stackview在奇数时具有与第一个stackview相同的项目。感谢Shuja和Josh为我指明了正确的方向
最后,我使用了
UICollectionView
并更改了SizeForestMat
中的一些值以响应单元格大小的更改,并使用insetForSectionAt
函数将单元格水平居中。集合视图可能是更好的选择!!你好,迈克,谢谢你的回答。我已经使用了CollectionView,但只使用了固定大小的单元格。您知道如何在集合视图中水平居中单元格吗?我可以用“sizeForItemAt函数”控制视图大小,对吗?水平居中单元格,这完全取决于集合视图的高度,您需要做的是根据有行数设置集合视图的高度,即假设有5个单元格,然后设置高度120,如果超过设置的两倍,如240,将高度均匀分布在单元之间,这将有所帮助