【无限互联】IOS开发之瀑布流的实现(UICollectionView与UIScrollView) 瀑布流可以在保证图片原始比例的情况下,灵活的展现内容,相对于传统的使用相同大小的网格展现大量图片,要好上很多,而实现瀑布流的方式有很多种,网上比较流行的有三种实现方式。 1,使用UIScrollView ,主要技术点在于视图的重用。 2,使用UITableView ,这种方式应该是最易想到的,因为需要展现几列就用几个 tabelview就 ok 了,而且不需要考虑重用,应为苹果已经做好了,只需要考虑如何在几列 tabelView滑动的时候,保持同步不出现BUG。 3,使用UICollectionView ,UICollectionView 在iOS6 中第一次被介绍,它与 UITableView有许多相似点,但它多了一个布局类,而实现瀑布流,就与这个布局类有关。此种方式实现,也不需要考虑视图重用。 以上三种方式实现瀑布流,使用UICollectionView 应该算是最简单的了,so,就重最简单的开始吧。 由于网络太差,所以展现的并不是网络上的图片,而是将用户相册中的图片读取出,并用瀑布流展现。 首先,遍历用户相册,将照片放到准备好的数组中。访问用户相册需要导入
框架 [o bjc] view plaincopy 1. _images = [NSMutableArray array]; 2. //创建相册库 3. library = [[ALAssetsLibrary alloc] init]; 4. 5. [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *group, BOOLBOOL *stop) { 6. if (group) { 7. [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOLBOOL *stop) { 8. if (result) { 9. ALAssetRepresentation *resentation = [result defaultRepresentation]; 10. CGImageRef imageRef = resentation.fullResolutionImage; 11. UIImage *image = [UIImage imageWithCGImage:imageRef]; 12. 13. //将相片加入到数组中 14. [self.images addObject:image]; 15. [_collectionView reloadData]; 16. } 17. 18. }]; 19. } 20. 21. } failureBlock:^(NSError *error) { 22. 23. }]; 24. 然后创建UICollectionView ,注意这里放置UICollectionView 的控制器要实现,UICollectionViewDelegateFlowLayout 和UICollectionViewDatasource 两个协议。 UICollectionView 创建时...