iOS collectionView的使用

来源:互联网 发布:汕头澄海有淘宝代运营 编辑:程序博客网 时间:2024/05/17 08:55
#pragma mark - #pragma mark 创建collectionView- (UICollectionView *)collectionView {    if (!_collectionView) {        //确定是水平滚动,还是垂直滚动        UICollectionViewFlowLayout *flowLayout=[[UICollectionViewFlowLayout alloc] init];        [flowLayout setScrollDirection:UICollectionViewScrollDirectionVertical];        self.collectionView=[[UICollectionView alloc] initWithFrame:CGRectMake(0, 64, width(self.view.frame), height(self.view.frame) - 64 - 60*KScDefineWidth) collectionViewLayout:flowLayout];        self.collectionView.dataSource=self;        self.collectionView.delegate=self;        [self.collectionView setBackgroundColor:[UIColor clearColor]];        //注册Cell,必须要有        [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"UICollectionViewCell"];                [self.view addSubview:self.collectionView];    }    return _collectionView;}- (void)initRefresh {    MJRefreshNormalHeader *refreshHeader = [MJRefreshNormalHeader headerWithRefreshingBlock:^{        [self loadAfterLoginData:NO];    }];    self.collectionView.header = refreshHeader;    //        [self.tableView.header beginRefreshing];    MJRefreshBackNormalFooter *refreshFooter = [MJRefreshBackNormalFooter footerWithRefreshingBlock:^{        [self loadAfterLoginData:YES];    }];    self.collectionView.footer = refreshFooter;    [self loadAfterLoginData:NO];}#pragma mark -- UICollectionViewDataSource//定义展示的UICollectionViewCell的个数-(NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section {    return self.dataSourceArray.count;}//定义展示的Section的个数-(NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView{    return 1;}//每个UICollectionView展示的内容-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{    static NSString * CellIdentifier = @"UICollectionViewCell";    UICollectionViewCell * cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath];    pictureModel *model = _dataSourceArray[indexPath.row];    NSString *picUrl = [NSString stringWithFormat:ImageUrlAll,model.path];    UIImageView *imageView = [[UIImageView alloc] initWithFrame:cell.bounds];    [imageView sd_setImageWithURL:[NSURL URLWithString:picUrl] placeholderImage:[UIImage imageNamed:@"moren"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {            }];    UIImageView *flagImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 30*KScDefineWidth, 30*KScDefineWidth)];    if ([model.status integerValue] == 0) {        flagImageView.image = [UIImage imageNamed:@"pic_status_0"];    }else {        if ([model.review integerValue] == 1) {            flagImageView.image = [UIImage imageNamed:@"pic_status_2"];        }else {            flagImageView.image = [UIImage imageNamed:@"pic_status_1"];        }    }    [imageView addSubview:flagImageView];    for (id subView in cell.contentView.subviews) {        [subView removeFromSuperview];    }    [cell.contentView addSubview:imageView];    return cell;}#pragma mark --UICollectionViewDelegateFlowLayout//定义每个Item 的大小- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath{    return CGSizeMake(ImageWidth*KScDefineWidth + 9*KScDefineWidth, ImageWidth*KScDefineWidth + 9*KScDefineWidth);}//定义每个UICollectionView 的 margin-(UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section{    return UIEdgeInsetsMake(5*KScDefineWidth, 5, 5*KScDefineWidth, 5);}#pragma mark --UICollectionViewDelegate//UICollectionView被选中时调用的方法-(void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{       [self.imageUrlArray removeAllObjects];    UICollectionViewCell * cell = (UICollectionViewCell *)[collectionView cellForItemAtIndexPath:indexPath];    //临时改变个颜色,看好,只是临时改变的。如果要永久改变,可以先改数据源,然后在cellForItemAtIndexPath中控制。(和UITableView差不多吧!O(∩_∩)O~)    cell.backgroundColor = [UIColor greenColor];    NSLog(@"item======%ld",indexPath.item);    NSLog(@"row=======%ld",indexPath.row);    NSLog(@"section===%ld",indexPath.section);    MHPhotoBrowserController *vc = [MHPhotoBrowserController new];    vc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;    vc.currentImgIndex = (int)indexPath.row;    vc.displayTopPage = YES;    vc.displayDeleteBtn = YES;    for (int i = 0; i < self.dataSourceArray.count; i++) {        pictureModel *model = _dataSourceArray[i];        NSString *picUrl = [NSString stringWithFormat:ImageUrlAll,model.path];        [self.imageUrlArray addObject:[MHPhotoModel photoWithURL:[NSURL URLWithString:picUrl]]];    }    pictureModel *model = _dataSourceArray[indexPath.row];    [[NSUserDefaults standardUserDefaults] setObject:model.status forKey:@"imageStatus"];    [[NSUserDefaults standardUserDefaults] synchronize];    [[NSUserDefaults standardUserDefaults] setObject:model.modelID forKey:@"imagePid"];    [[NSUserDefaults standardUserDefaults] synchronize];        vc.imgArray = self.imageUrlArray;    [self.navigationController presentViewController:vc animated:YES completion:nil];    NSDictionary *dict =[[NSDictionary alloc] initWithObjectsAndKeys:self.dataSourceArray,@"singleItemDelete", nil];    //创建通知    NSNotification *notification =[NSNotification notificationWithName:@"singleItemDelete" object:nil userInfo:dict];    //通过通知中心发送通知    [[NSNotificationCenter defaultCenter] postNotification:notification];}- (NSMutableArray *)imageUrlArray {    if (!_imageUrlArray) {        self.imageUrlArray = [NSMutableArray new];    }    return _imageUrlArray;}//返回这个UICollectionView是否可以被选择-(BOOL)collectionView:(UICollectionView *)collectionView shouldSelectItemAtIndexPath:(NSIndexPath *)indexPath{    return YES;}// 设置最小行间距,也就是前一行与后一行的中间最小间隔- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section {    return 5;}// 设置最小列间距,也就是左行与右一行的中间最小间隔- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section {    return 5;}

1 0