欢迎来到天天文库
浏览记录
ID:8802144
大小:566.60 KB
页数:10页
时间:2018-04-08
《【无限互联】ios开发之瀑布流的实现(uicollectionview与uiscrollview)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、【无限互联】IOS开发之瀑布流的实现(UICollectionView与UIScrollView)瀑布流可以在保证图片原始比例的情况下,灵活的展现内容,相对于传统的使用相同大小的网格展现大量图片,要好上很多,而实现瀑布流的方式有很多种,网上比较流行的有三种实现方式。1,使用UIScrollView,主要技术点在于视图的重用。2,使用UITableView,这种方式应该是最易想到的,因为需要展现几列就用几个tabelview就ok了,而且不需要考虑重用,应为苹果已经做好了,只需要考虑如何在几列tabelView滑动的时候,保持同步不出现
2、BUG。3,使用UICollectionView,UICollectionView在iOS6中第一次被介绍,它与UITableView有许多相似点,但它多了一个布局类,而实现瀑布流,就与这个布局类有关。此种方式实现,也不需要考虑视图重用。以上三种方式实现瀑布流,使用UICollectionView应该算是最简单的了,so,就重最简单的开始吧。由于网络太差,所以展现的并不是网络上的图片,而是将用户相册中的图片读取出,并用瀑布流展现。首先,遍历用户相册,将照片放到准备好的数组中。访问用户相册需要导入3、sLibrary.h>框架[objc] viewplaincopy1. _images = [NSMutableArray array]; 2. //创建相册库 3. library = [[ALAssetsLibrary alloc] init]; 4. 5. [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *g4、roup, BOOLBOOL *stop) { 6. if (group) { 7. [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOLBOOL *stop) { 8. if (result) { 9. ALAssetRepresentation *resentation = [result defaultRepresentat5、ion]; 10. CGImageRef imageRef = resentation.fullResolutionImage; 11. UIImage *image = [UIImage imageWithCGImage:imageRef]; 12. 1. //将相片加入到数组中 2. [self.images addObject:i6、mage]; 3. [_collectionView reloadData]; 4. } 5. 6. }]; 7. } 8. 9. } failureBlock:^(NSError *error) { 10. 11. }]; 12. 然后创建UICollectionView,注意这里放置UICollectionView的控7、制器要实现,UICollectionViewDelegateFlowLayout和UICollectionViewDatasource两个协议。UICollectionView创建时需要传入一个布局对象,布局类继承自UICollectionViewLayout这个抽象基类,我们需要自定义布局对象,继承UICollectionViewLayout的子类,UICollectionViewFlowLayout类,命名为WaterFlowLayout。[objc] viewplaincopy1.8、4px;">@interface WaterFlowLayout : UICollectionViewFlowLayout 2.@property (nonatomic,assign)id
3、sLibrary.h>框架[objc] viewplaincopy1. _images = [NSMutableArray array]; 2. //创建相册库 3. library = [[ALAssetsLibrary alloc] init]; 4. 5. [library enumerateGroupsWithTypes:ALAssetsGroupSavedPhotos usingBlock:^(ALAssetsGroup *g
4、roup, BOOLBOOL *stop) { 6. if (group) { 7. [group enumerateAssetsUsingBlock:^(ALAsset *result, NSUInteger index, BOOLBOOL *stop) { 8. if (result) { 9. ALAssetRepresentation *resentation = [result defaultRepresentat
5、ion]; 10. CGImageRef imageRef = resentation.fullResolutionImage; 11. UIImage *image = [UIImage imageWithCGImage:imageRef]; 12. 1. //将相片加入到数组中 2. [self.images addObject:i
6、mage]; 3. [_collectionView reloadData]; 4. } 5. 6. }]; 7. } 8. 9. } failureBlock:^(NSError *error) { 10. 11. }]; 12. 然后创建UICollectionView,注意这里放置UICollectionView的控
7、制器要实现,UICollectionViewDelegateFlowLayout和UICollectionViewDatasource两个协议。UICollectionView创建时需要传入一个布局对象,布局类继承自UICollectionViewLayout这个抽象基类,我们需要自定义布局对象,继承UICollectionViewLayout的子类,UICollectionViewFlowLayout类,命名为WaterFlowLayout。[objc] viewplaincopy1.8、4px;">@interface WaterFlowLayout : UICollectionViewFlowLayout 2.@property (nonatomic,assign)id
8、4px;">@interface WaterFlowLayout : UICollectionViewFlowLayout 2.@property (nonatomic,assign)id
此文档下载收益归作者所有