自定义UICollectionViewFlowLayout

时间:2014-07-19 02:14:08

标签: ios ios7 uicollectionview uicollectionviewcell uicollectionviewlayout

我正在尝试创建一个具有以下用户配置文件的应用程序(第一张图片):https://dribbble.com/shots/1642506-Messaging-app-Viber/attachments/257232

我对配置文件的底部特别感兴趣,在白线和"关注我"部分。我的假设是这是使用UICollectionView完成的,但如果我弄错了请纠正我,我会相应地编辑这个问题。对于6个元素,集合视图看起来很标准(其中' o代表一个圆圈):
o o o o o o

我不希望它们按照每个低于6的数字进行布局。我希望它们居中。例如,5个元素看起来像:
o o o  o o - > (位于前三位之间 - Markdown空白)

4:
 o o
 o o

3:
o o o o o o o o o o o o o(((((((((((  o - > (位于前两位 - Markdown空白之间)

2:
 Ø
 o

1:
 o

如果您有任何更好的布局建议,请告诉我们。因此,正如您从上面所看到的,我希望布局根据集合视图的数据源中的元素数量进行更改。元素的数量永远不会超过6。

此外,用户可能能够编辑其中一个配置文件,其中一个' +'将出现图标,使集合视图显示为(n + 1)布局。例如,编辑具有4个元素的配置文件的用户将查看集合视图布局,就好像它具有5个元素,第五个元素是' +'签署添加另一个元素。用户只能从已有6个元素的配置文件中删除元素。

最初,我正在考虑使用一堆' if'并且'切换'基于集合视图的indexPath.row和数据源中元素数量的语句。但是,这似乎很草率。有没有办法使用自定义UICollectionViewFlowLayout执行此操作?无论哪种方式,如何实现这样的布局?

提前感谢您的任何建议。很抱歉,这个问题很长,我可以在必要时提供澄清。

1 个答案:

答案 0 :(得分:0)

我觉得集合视图是错误的解决方案。它们被设计为在滚动网格或其他程序布局中显示任意数量的内容。您有1-6个按钮,其美学布局不容易通过算法生成。

真的,你有10个"插槽"在5x2排列中,您要将按钮放在:

[01234]
[56789]

您需要做的就是以编程方式生成这些位置,然后将布局定义为"插槽的数组":

6项:@[0,2,4,5,7,9]

5项:@[0,2,4,6,8]

等等......