实现"iOS照片风格"平铺图像库的最佳方式

Jih*_*ang 2 cocoa-touch core-data objective-c uitableview photo-gallery

我有一个应用程序,基本上可以用来下载,上传和管理各种Web服务的照片.

我希望图像列表视图看起来像iOS照片应用程序,但不太确定最好的方法是什么.

我以为我可以使用NSMutableArray和子类UIScrollView从头开始创建该功能,但我真的很想使用NSFetchedResultsController,因为在Core Data中动态/异步更新/插入/删除了与图像相关的一些数据.

现在我已经设置了一些非常hacky的东西.
我创建了一个单独的Core Data实体来保存每个托管对象中4张照片的关系,并通过它们创建了UITableView循环.然后,cellforrow委托将遍历每个表格单元格中的4张照片.这种方法很糟糕,因为很难动态删除和插入照片,每次更新时我都必须重建关系并重新加载表格.

我看过其他一些库,但是我真的很想知道最简单有效的方法是什么.

Mar*_*rra 5

如果您指的是平铺视图,则可以使用a UITableView或a 复制它UIScrollView.如果你想侧面滚动那么a UIScrollView是起点.

如果你想让它垂直滚动(我推荐在iPhone上),那么使用UITableView自定义UITableViewCell.

至于核心数据方面,您可能会出现这种错误,您正试图在核心数据中存储UI状态信息(单元格中有多少张照片).核心数据不应关心单元格中有多少图像.

的UITableViewCell

要使用a,UITableView您将创建一个包含所有图像的数组.然后,您可以通过将该数组除以每行的图像数来确定所需的行数.

从那里你应该子类化UITableViewCell并传入4个图像以便绘制该单元格.然后,将4个UIImageView实例添加到自定义单元格并设置图像是一件简单的事情.

UIScrollView中

对于滚动视图,您可以UIImageView为每个图像创建一个图像,然后将它们添加为图像的子视图UIScrollView.然后,您可以设置每个帧的帧,UIImageView以便它们显示在网格中.

如果你发现你的图像数量超过你在内存中可以容纳的数量,那么你将需要处理平铺,有效地关注用户滚动和填充的位置(通过移动屏幕外图像视图)在用户边缘之前向着滚动.这与你UITableView通过排队的细胞免费有效地获得同样的东西.