iOS图像网格

iOS图像网格,ios,objective-c,uitableview,uicollectionview,Ios,Objective C,Uitableview,Uicollectionview,我正在开发一个简单的gridview来显示图像。网格将有3列和N行。我正在考虑以下两种方法: 1) 将UITableView与自定义单元格一起使用,每个单元格包含3个UIImageView 2) 使用UICollectionView 我对#1更满意,因为我习惯于实现UITableView,但两者都比另一个更有效?您的案例符合行级可重用性,因此我更喜欢UITableView,但请记住,如果您的图像不是资源的一部分,并且您总是从服务器下载它,那么您的tableView可能会在滚动期间开始挂起(除非使

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

1) 将
UITableView
与自定义单元格一起使用,每个单元格包含3个UIImageView

2) 使用
UICollectionView


我对#1更满意,因为我习惯于实现
UITableView
,但两者都比另一个更有效?

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

简介

就处理效率而言,我认为这两种选择之间没有显著差异。然而,就直观性和简单性而言,UICollectionView是这两个选项中的佼佼者。如果您对UITableView感到满意,那么选择UICollectionView一点也不困难;苹果在标准化两者之间的接口方面做了大量工作。以下是使用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。祝你好运

UICollectionView在这种情况下效率更高。同意,
UICollectionView
s非常有趣!如果您希望它总是3列乘n行,那么我看不出使用集合视图有任何好处。我认为效率无论如何都不是问题。