在iOS

2012-02-13 17 views
4

Pinterest的GridView的实现我想要实现像在Pinterest的在iOS

我想过实现如3个表视图网格视图。但我无法很好地将它们卷在一起。当我执行scrollViewDidScroll并为其他scrollView的表视图设置contentOffset时,滚动变得缓慢且不可用。

我做的另一个实现是有一组图像加载并调用scrollViewDidScroll中的viewDraw函数。 ViewDraw函数只是绘制必要的图像,并从内存中删除已经绘制但不会显示的其余图像。 这也使ScrollView滚动缓慢。另一个问题是在绘制图像之前有白色(背景色)补丁。

什么应该是实现这个网格视图的最佳方式?

+0

只需使用一个表视图并在tableView中创建多个列。添加图像到你需要的每一列。使用这些教程http://stackoverflow.com/questions/2855857/how-to-display-multiple-columns-in-a-uitableview,http://stackoverflow.com/questions/ 3252682 /多列在表格视图 – fibnochi 2012-02-13 13:54:27

+1

但是,这不会正常工作?由于图像没有像往常一样对齐。一些图像比其他图像长。 – Amal 2012-02-13 17:36:10

+0

只是使用UIView的scaleToFit属性(UIImageView在你的情况) – fibnochi 2012-02-16 07:00:58

回答

3

解决方案1 ​​(我不知道,如果这个工程,我不很喜欢)

如何具有3个垂直表并排从任何的tableview意见的一面,但转发任何触摸事件到其他人。我知道在尝试同步桌面时遇到了性能问题,但也许在事件级别上工作会更好。也许。

溶液2

使用一个UIScrollView(用于过程的滚动目的)。出于性能和内存方面的原因,您还需要实现按需加载的机制,以便您不会一次加载所有图像。

要做到这一点,我会创建一个类,CustomImageStrip处理垂直图像列表。此类与scrollview一起使用,并使用contentOffset来决定何时从条上加载/卸载图像。

通过拥有3个独立的图像条类,图像可以是任意大小,并且不需要对齐。但是,因为它们都属于同一个UIScrollView,所以滚动将同时完成。

+0

第二个解决方案似乎更像pinterest,因为他们按高度布置图像(“nextToShow”图像转到卧台时高度较低的列出来)。但它需要更多关注细节,并且需要为这些自定义视图创建出列机制(用于内存消耗目的)。 – Ariel 2012-03-07 16:10:32

+0

事实上,你需要实现出队机制,但它听起来并不复杂。与解决方案1相反,我认为它简单得多:) – 2012-03-08 07:50:07

+0

我已经做了一些类似于第一个解决方案,一个是两个表(一个主要,整个屏幕,第二个,索引样式,但带有图像)。我有过的性能问题是因为主表(单元格高度大于屏幕,最后是分割单元),而不是因为两个表格同步它们......顺便说一下,您可以给我举一个出队机制的例子吗? – Ariel 2012-03-08 09:25:07