博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
iOS根据网络图片的size大小设置UIImageView的大小
阅读量:7080 次
发布时间:2019-06-28

本文共 1444 字,大约阅读时间需要 4 分钟。

有时候在设置UIImageView的大小时候需要根据UIimage的长宽比来自动设置,不让图片原比例失真。

如果是从本地获取到的图片,[UIImage imageNamed:@""];

这样就可以拿到image了,从而获取到image的size。但大多数时候我们都是网络请求拿到的图片,

我们需要

NSData *data = [NSData dataWithContentsOfURL:url];

image = [UIImage imageWithData:data];

这样来得到image,但是在网络慢的情况下,这种同步的请求可能会让线程卡住。

一般情况下我们都是使用SDWebImage这个第三方来加载图片的。但都是用UIimageView来调Sd_webImage 这样的方法直接设置,而不是拿到image后再去设置UIimageView的image,这样我们就没办法先得到size设置好UIimageView的大小再去设置image。

 

在网上找到一个方法解决了这个问题,就是在SDWebImage 中有一个获取缓存的方法,先判断SDWebImage有没有缓存这个图片,有的话就获取,没有再使用

NSData *data = [NSData dataWithContentsOfURL:url];

image = [UIImage imageWithData:data];

来获取

 

代码如下,

//显示单张图片时,固定宽度。

 

    __block CGFloat itemW = 200;

    __block CGFloat itemH = 0;

    if (_photoDataArray.count == 1) {

    

        UIImageView * imageView = [[UIImageView alloc] init];

        NSURL * url = [NSURL URLWithString:_photoDataArray.firstObject];

        [imageView sd_setImageWithURL:url placeholderImage:[UIImage imageNamed:@"placeHolder.jpg"]];

        SDWebImageManager *manager = [SDWebImageManager sharedManager];

        BOOL existBool = [manager diskImageExistsForURL:url];//判断是否有缓存

        UIImage * image;

        if (existBool) {

            image = [[manager imageCache] imageFromDiskCacheForKey:url.absoluteString];

        }else{

            NSData *data = [NSData dataWithContentsOfURL:url];

            image = [UIImage imageWithData:data];

        }

        

        //根据image的比例来设置高度

        if (image.size.width) {

            itemH = image.size.height / image.size.width * itemW;

            

            if (itemH >= itemW) {

                itemW = 120;

                itemH = image.size.height / image.size.width * itemW;

            }

        }

转载地址:http://fqdml.baihongyu.com/

你可能感兴趣的文章
Ubuntu单用户模式(安全模式)
查看>>
Python之反射练习
查看>>
[MST] Describe Your Application Domain Using mobx-state-tree(MST) Models
查看>>
6. python 字符串格式化表达式
查看>>
【BIEE】11_BIEE图形报表在谷歌浏览器64.0.3282.140中访问图例乱码解决
查看>>
Nginx网站常见的跳转配置实例
查看>>
GitFlow工作流常用操作流程
查看>>
asp.net跳出iframe结构转向登录
查看>>
QTTabBar
查看>>
MODBUS协议整理——功能码简述
查看>>
eclipse里maven项目An error occurred while filtering resources解决办法
查看>>
MySQL导入SQL文件及常用命令
查看>>
c#(.Net)解析xml
查看>>
调整Virtual Box硬盘大小
查看>>
社会实体经济不断下滑的个人思考
查看>>
Pytorch多GPU并行处理
查看>>
【定制Android系统】Android O 在ROM中添加自己的 so 库(1)——Android.mk 与 Android.bp 的区别【转】...
查看>>
C#中把货币、日期转换成中文大写
查看>>
最近累死人的校园招聘20110928
查看>>
数字信号处理实验(零)—— 一维声音信号处理和二维图像处理
查看>>