文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

UITableView加载网络图片 cell适应图片高度

2023-09-17 18:46

关注

UITableView加载网络图片 cell适应图片高度

一、自定义cell.xib上拖拽一个imageView

上下左右贴边约束,连线属性

cell.h@property (strong, nonatomic) IBOutlet UIImageView *imgView;

在这里插入图片描述

二、在VC.m 中根据图片尺寸设置cell高度

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {    return self.picAdrVOS.count;}- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{    // 先从缓存中查找图片    NSString *imgURL = self.picAdrVOS[indexPath.row].imgUrl;    UIImage *image = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:imgURL];        if (!image) {        return 0;    }    //手动计算cell    CGFloat imgHeight = image.size.height * kScreenWidth / image.size.width;    return imgHeight;}- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {    YBMImgTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"YBMImgTableViewCell" forIndexPath:indexPath];    [self configureCell:cell atIndexPath:indexPath];    ……    return cell;}//加载图片- (void)configureCell:(YBMImgTableViewCell *)cell atIndexPath:(NSIndexPath *)indexPath {    YBMShopHomePicModel *model = self.picAdrVOS[indexPath.row];    UIImage *cachedImage = [[SDImageCache sharedImageCache] imageFromDiskCacheForKey:model.imgUrl];    if (!cachedImage ) {        [self downloadImage:model.imgUrl];    } else {        cell.imgView.image = cachedImage;    }}- (void)downloadImage:(NSString *)imageURL{    // 利用 SDWebImage 框架提供的功能下载图片    [[SDWebImageDownloader sharedDownloader]downloadImageWithURL:[NSURL URLWithString:imageURL] options:SDWebImageDownloaderUseNSURLCache progress:^(NSInteger receivedSize, NSInteger expectedSize) {    } completed:^(UIImage *image, NSData *data, NSError *error, BOOL finished) {        [[SDImageCache sharedImageCache]storeImage:image forKey:imageURL toDisk:YES];        // ⚠️必须判断有图片才刷新,避免因加载失败而引起死循环!        if(image) {        dispatch_async(dispatch_get_main_queue(), ^{            [self.tableView reloadData];        });        }    }];}

这样就可以实现效果啦。

⚠️⚠️⚠️注意:加载图片失败时,必须判断有图片才刷新tableView,避免因图片加载失败而引起死循环!

来源地址:https://blog.csdn.net/biyuhuaping/article/details/123133223

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-服务器
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯