UICollectionView像Springboard一样的文件夹
我试图达到以下效果:
UICollectionView
显示父types对象的单元格网格,例如相册。 当我点击这些项目中的一个时,我想将该元素滚动到屏幕的顶部,并从中打开一个像跳板一样的文件夹。 在该文件夹区域内,应显示另一个集合,包括详细信息,即该专辑的各个照片。 在剩余的“父”视图中点击再次closures该文件夹。 看到这个模式:
到目前为止,我所做的是定期收集相册的视图。 当我select一个,它滚动到选定的项目顶部,然后使用JWFolders
在该地方打开一个空的文件夹。 一旦显示,我触发周围的UINavigationController
推我的第二个视图控制器的细节项目。 那个被放下,所以用户看起来好像还是一样的。
这种方法有几个问题,我想知道如何更好地做到这一点:
-
JWFolders截图并向上/向下animation的两半来实现开放效果。 这是可以的,但在iPad3上很慢,因为它移动了很多像素,而且iPad3的GPU还不能完成任务。
-
第二个视图需要像素完美匹配的第一个顶部。 这很可能会意外中断。
-
我对视图控制器转换的animation是有限的。 默认的
UINavigationController
从右侧推入并不合适。 我忽略了做一个交叉溶解,但仍然是非常不理想的。
我想指出如何以可维护的方式来处理这个问题,而不需要对框架devise要做的事情进行太多的创造性攻击。 我可能会在这里忽略一些显而易见的东西,所以我们对这个例子或者一般性的build议有所指导
更新:
我改变了一下方法。 现在我使用具有两个embedded式集合视图控制器的容器视图控制器。 一个用于“专辑”,另一个用于底部的“照片”部分。 在两者之间的中间使用UIImageView
我可以得到三angular形向上完成。 从维护的angular度来看,这样做也很好,因为这样可以使两个集合完全分开处理,从而简化维护过程。
该应用程序使用自动布局,所以我可以通过修改约束来更改每个embedded视图所占用的空间量。 这比使用JWFolders的基于截图的方法快得多,并且在iPad3上也能很好地工作。
这几乎让我想去的地方。 剩下的一件事就是让开场animation正确。 我想同时滚动“专辑”collections集,以便点击的项目将显示在顶部,并使用指向“相册”单元格的三angular形展开照片collections集。
我可以以某种方式通过布局约束“连接”下部视图到该单元格,以便scrollToItemAtIndexPath:atScrollPosition:animated:
call拖动下部视图打开?
为了解决这个问题,我会失去图书馆,并导致iOS移动这些显示元素,没有截图或其他技巧。 在水龙头上,导致轻拍图标保持其正常的外观,而你昏暗的所有其他。 从点击图标所在行的顶部到尾部,查找集合视图的内容。 创build两个新的collections视图 – 其中一个包含上半部分,其中包含您的轻敲图标,其中一个包含下面的其他视图。 将这些视图分开制作animation,为文件夹视图留出空间。
该文件夹视图是另一个UICollectionView出现在创build的差距。 在主视图中,根据抽屉是打开还是closures呈现一个或三个视图。 我可能会考虑创build一个集合视图的视图控制器,并使用视图控制器遏制来pipe理所有三个视图。 您可以完全控制这些视图的呈现方式,因此您可以同时向上和向下animation顶视图和底视图,以便像Springboard一样显示文件夹视图。
当这一切都工作,那么你可以概括和开始做的事情,如决定使底部集合的挖掘图标的一部分出现在上面的文件夹,如果图标在屏幕上低。
(我不愿意回答这个问题,因为有大量的投票却没有答案,所以我可能错过了一些东西,但是这就是我如何开始尝试实现跳板的效果。)
要以相对简单的方式解决此问题,可以尝试将文件夹设置为简单的UICollectionView子类,然后在轻按相册单元格时插入该单元格。 在集合视图数据源中,您将不得不为文件夹单元返回不同的大小等。 在文件夹中,您将不得不创build文件夹集合视图,避免将文件夹单元格作为单元文件夹集合视图的数据源。