根据网络图片的size大小设置UIImageView的大小

有时候在设置UIImageView的大小时候需要根据UIimage的长宽比来自动设置,不让图片原比例失真。
如果是从本地获取到的图片,这样就可以拿到image了,从而获取到image的size。

[UIImage imageNamed:@""];

但大多数时候我们都是网络请求拿到的图片,
我们需要通过NSData获取image,但这样来得到image,但是在网络慢的情况下,这种同步的请求可能会让线程卡住。

NSData *data = [NSData dataWithContentsOfURL:url];
image = [UIImage imageWithData:data];

一般情况下我们都是使用SDWebImage这个第三方来加载图片的。但都是用UIimageView来调Sd_webImage 这样的方法直接设置,而不是拿到image后再去设置UIimageView的image,这样我们就没办法先得到size设置好UIimageView的大小再去设置image。
查看了SDWebImage的源代码,发现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;
           }
       }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 图片下载的这些回调信息存储在SDWebImageDownloader类的URLOperations属性中,该属性是...
    怎样m阅读 7,340评论 0 1
  • 下载 下载管理器 SDWebImageDownLoader作为一个单例来管理图片的下载操作。图片的下载是放在一个N...
    wind_dy阅读 5,449评论 0 1
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,530评论 4 61
  • 恩,我已经毕业一年了,是个职场菜鸟,在一个不大不小的公司上班,每天两点一线,亲人不再身边,没有恋人,朋友少的可怜,...
    小小金子呀阅读 3,192评论 0 0
  • 世界最遥远的距离不是有多远,是你在这个社会上没有任何一个人值得信任 每天为自己的家人而活,倒头来,自己却受别人指指...
    笛子演奏家阅读 1,202评论 0 0

友情链接更多精彩内容