当前位置: 首页 > 工具软件 > Photo Browser > 使用案例 >

iOS PhotoBrowser - ZLThumbnailViewController 获取900张以上图片内存警告闪退的问题

山乐生
2023-12-01



优化内存  把cell显示的图片 尺寸变小一点,然后选中以后不从imageview里获取image而是重新获取原图;




- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

{

    ZLCollectionCell *cell = [collectionViewdequeueReusableCellWithReuseIdentifier:@"ZLCollectionCell"forIndexPath:indexPath];

    

    cell.btnSelect.selected =NO;

    PHAsset *asset =_arrayDataSources[indexPath.row];

    

    cell.imageView.contentMode =UIViewContentModeScaleAspectFill;

    cell.imageView.clipsToBounds =YES;

    

    CGSize size = cell.frame.size;

    

    

//    size.width *= 10;

//    size.height *= 10;

    

    size.width *=2;

    size.height *=2;

    

    

    [[ZLPhotoToolsharePhotoTool] requestImageForAsset:assetsize:size resizeMode:PHImageRequestOptionsResizeModeExactcompletion:^(UIImage *image) {

        

//        DSLog(@"  每个cell上面的小图   image.size.width   %f    image.size.height    %f",image.size.width,image.size.height);


        

        cell.imageView.image = image;

        

        

        

        for (ZLSelectPhotoModel *modelin _arraySelectPhotos) {

            if ([model.imageNameisEqualToString:[asset valueForKey:@"filename"]]) {

                cell.btnSelect.selected =YES;

                break;

            }

        }

    }];

    

    cell.btnSelect.tag = indexPath.row;

    [cell.btnSelectaddTarget:selfaction:@selector(cell_btn_Click:)forControlEvents:UIControlEventTouchUpInside];

    

    return cell;

}




#pragma mark - UIButton Action

- (void)cell_btn_Click:(UIButton *)btn

{

    

    DSLog(@"点击选择照片按钮");

    

    if (_arraySelectPhotos.count >= self.maxSelectCount

        && btn.selected ==NO) {

        ShowToastLong(@"最多只能选择%ld张图片", (long)self.maxSelectCount);

        return;

    }

    

    PHAsset *asset =_arrayDataSources[btn.tag];

    ZLCollectionCell *cell = (ZLCollectionCell *)[self.collectionViewcellForItemAtIndexPath:[NSIndexPathindexPathForRow:btn.taginSection:0]];

    if (!btn.selected) {

        //添加图片到选中数组

        [btn.layeraddAnimation:[ZLAnimationToolanimateWithBtnStatusChanged]forKey:nil];

        if (cell.imageView.image ==nil) {

           ShowToastLong(@"该图片尚未从iCloud下载,请在系统相册中下载到本地后重新尝试,或在预览大图中加载完毕后选择");

            return;

        }

        ZLSelectPhotoModel *model = [[ZLSelectPhotoModelalloc] init];

        model.asset = asset;

        

        [[ZLPhotoToolsharePhotoTool] requestImageForAsset:assetsize:PHImageManagerMaximumSizeresizeMode:PHImageRequestOptionsResizeModeNonecompletion:^(UIImage *image) {

            

//            DSLog(@"    选中后  每个cell上面的原图   image.size.width   %f    image.size.height    %f",image.size.width,image.size.height);

            

            model.image = image;

            


        }];

        

//        model.image = cell.imageView.image;

        

        model.imageName = [assetvalueForKey:@"filename"];

        [_arraySelectPhotosaddObject:model];

    } else {

        for (ZLSelectPhotoModel *modelin _arraySelectPhotos) {

            if ([model.imageNameisEqualToString:[asset valueForKey:@"filename"]]) {

                [_arraySelectPhotosremoveObject:model];

                break;

            }

        }

    }

    

    btn.selected = !btn.selected;

    [selfchangePreViewStatus];

}







 类似资料: