iOS图像网格

时间:2014-07-26 02:30:31

标签: ios objective-c uitableview uicollectionview

我正在开发一个简单的gridview来显示图像。网格将有3列和N行。我考虑了以下两种方法:

1)使用UITableView自定义单元格,每个单元格包含3个UIImageViews。

2)使用UICollectionView

我对#1感到更舒服,因为我已经习惯了UITableViews,但是要比其他人更有效率?

2 个答案:

答案 0 :(得分:2)

<强>简介

就处理效率而言,我不认为两种选择之间存在显着差异。但是,就直观性和简单性而言,UICollectionView是两个选项中较好的选择。如果您对UITableView感到满意,那么选择UICollectionView并不困难; Apple在标准化两者之间的接口方面做得很好。以下是使用UICollectionView的一些优点,我想到了这一点。

UICollectionView优势:未来的功能更容易

图像网格似乎是图库的起点;我作为用户希望能够点击图像并详细查看。也许你将来会实现这样的东西。使用UICollectionView,您所要做的就是实现:

- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath

是UICollectionViewDelegate协议实现的一部分。在这个方法中,你确切地知道被引用的图像(你知道indexPath)但是,对于UITableView,如果你实现类似的方法,你将知道选择了哪个UITableViewCell,但是不知道哪个是选择的图像没有多少工作。因此,全屏显示图像变得更加困难。

UICollectionView优势:更改更简单

现在考虑一下:假设明天你决定连续三张图片不够好;你要去两个人。使用UICollectionView,您所要做的就是修改故事板。使用UITableView,您必须修改单元格以具有两个图像,然后您必须修改单元格的属性以仅具有两个图像视图而不是三个,然后您必须删除第三个异步调用以从服务器获取图像来自

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

方法。这比以前的选项要多得多。

<强>结论

这些只是我想到的两个原因。一般来说,在处理“效率”这个术语时,我会试着问自己“将来可能会发生什么样的变化,以及如何进行优化以尽可能简化变革?”在我们这里的例子中,UITableView选项是一个不错的选择,如果从长远来看没有什么真正改变,但是,嘿,也许你会添加功能,或者决定改变你的布局;因此,在这个意义上,真正最有效的选择是UICollectionView。祝你好运!

答案 1 :(得分:0)

您的案例符合行可重用性,所以我更喜欢UITableView,但要记住,如果您的图片不是资源的一部分而且您总是从服务器下载它,那么您的tableView可能会在滚动期间开始挂起(除非通过使用线程非常小心地处理)。对于这种情况,您还可以选择将UIScrollView与自定义视图一起使用(其中包含UIImageView并负责下载它们。)