zoukankan      html  css  js  c++  java
  • iOS根据网络图片的size大小设置UIImageView的大小

    有时候在设置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;

                }

            }

  • 相关阅读:
    fastcgi性能调优(转)
    nginx location配置(转)
    elasticsearch配置文件详解(转)
    linux常用信号集
    phpstorm快捷键总结
    浅谈MVC中的service层(转)
    php中的内存管理的介绍(转)
    使用C语言开发PHP扩展(转)
    Linux恢复误删除的文件或者目录(转)
    笔记整理3——python实现MAC分析地理位置
  • 原文地址:https://www.cnblogs.com/sunfuyou/p/6284986.html
Copyright © 2011-2022 走看看