要做瀑布流后台不返回图片宽高尺寸怎么办?

做过瀑布流的都清楚,,后台数据会返回图片的宽高,,经过比例处理会整齐的排列。。collectionview的加载图片的过程是先全部设置好没个item的高度,,添加占位图片,,sdwebimage下载图片,,下载完成显示在对应的imageView,,那么后台不返回尺寸该怎么办??有的demo是在数据处理的时候将图片下载下来,获取尺寸,添加进model里。。在collectionview刷新的时候再给item的尺寸,,这样做可以。。但会比较耗时。。有图片缓存还好,,如果是上拉加载新的图片。。用户体验会特别的差。你就等吧。


与后台沟通后 结果是图片太多了 取尺寸太麻烦,,前台想办法。。。。。


安卓和iOS 都采用了同一个思路  先给一个固定相同的高度,,线程获取图片尺寸,,获取结束后,再刷新高度,,虽然用户体验也极差,,会看到图片突然地变大或变小。。但没找到更好的办法。。下面是我的APP用到的关键代码


#pragma mark  加载数据

- (void)addData{

    __weakTuiJianViewController *weakSelf =self;

    dispatch_async(dispatch_get_global_queue(0,0), ^{

        [[CommuncationsharedInstance] loadShouYeTuiJianWithstart:requestStartlimit:limitsucess:^(id result) {

            /// 断网的情况请求出错时走缓存数据

            if ([resultisKindOfClass:[NSErrorclass]]) {

                self.imagewarr = [NSMutableArrayarray];

                self.imageharr = [NSMutableArrayarray];

                requestResultArray = [NSMutableArrayarray];

                requestResultArray = [NSKeyedUnarchiverunarchiveObjectWithFile:[PathToolthePath:@"TuiJianData"]];

                for (NSDictionary *bodyin requestResultArray) {

                    NSString *imageUrl = imageUrl = body[@"video"][@"cover"];

                    /// 获取图片尺寸的方法,,有缓存从缓存中获取

                    CGSize size = [ImageSizeTool downloadImageSizeWithURL:[NSURLURLWithString:[NSStringstringWithFormat:@"%@%@",URLADDRESS,imageUrl]]];

                    [self.imagewarraddObject:[NSStringstringWithFormat:@"%f",size.width]];

                    [self.imageharraddObject:[NSStringstringWithFormat:@"%f",size.height]];

                }

                [weakSelf.tuijianCollectionViewreloadData];

                [weakSelf.tuijianCollectionView.mj_footerendRefreshing];

                [weakSelf.tuijianCollectionView.mj_headerendRefreshing];

            }else{

                if (!result[@"state"]) {

                    if (result[@"customMessage"]) {

                        [[iToastmakeText:result[@"customMessage"]]show];

                    }

                }else{

                    NSInteger num =requestStart;

                    requestStart =requestStart + [result[@"body"]count];

                    self.imagearr = [NSMutableArrayarray];

                    for (NSDictionary *bodyin result[@"body"]) {

                        if (![requestResultArraycontainsObject:body]) {

                            [requestResultArrayaddObject:body];

                        }

                        NSString *imageUrl = body[@"live"][@"cover"];

                        [self

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值