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;
}
}
iOS根据网络图片的size大小设置UIImageView的大小的更多相关文章
- ios UIImageView处理图片大小问题
UIImageView视图可以显示图片 实例化UIImageView有两种方法 第一种方法: UIImageView *myImageView = [[ UIImageView alloc] init ...
- [转载] IOS 获取网络图片的大小 改变 图片色值 灰度什么的方法集合
IOS 获取网络图片的大小 改变 图片色值 灰度什么的方法集合
- iOS TableView索引字体大小设置
-(void)tableView:(UITableView *)tableView willDisplayHeaderView:(UIView *)view forSection:(NSInteger ...
- iOS开发UI篇—ios应用数据存储方式(偏好设置)
iOS开发UI篇—ios应用数据存储方式(偏好设置) 一.简单介绍 很多iOS应用都支持偏好设置,比如保存用户名.密码.字体大小等设置,iOS提供了一套标准的解决方案来为应用加入偏好设置功能 每个应用 ...
- iOS 8 AutoLayout与Size Class自悟(转载)
iOS 8 AutoLayout与Size Class自悟 Size classiOS 8 AutoLayout 前言 iOS8 和iPhone6发布已经过去蛮久了,广大的果粉终于迎来了大屏iPhon ...
- IOS开发-UI学习-使用UIImageView控件制作动画
先添加40张tomcat的图片到资源列表中:名称为cat_eat0000.jpg到cat_eat0039.jpg. 1.定义所需控件 // 定义按钮,图片控件.可变数组对象 UIButton *act ...
- HDFS概述(2)————Block块大小设置
以下内容转自:http://blog.csdn.net/samhacker/article/details/23089157?utm_source=tuicool&utm_medium=ref ...
- 内存大小设置 Java heap space错误
1. 问题描述 当从数据库中查询大量的数据,每个模板取出来几百万条数据,或者是频繁的刷新项目.模板时就会占用Java虚拟机JVM的大量内存,超过内存就会出现报java.lang.OutOfMemory ...
- .Net连接字符串设置连接池大小显著提高数据库速度
在访问mysql数据库时,如果在连接字符串中设置使用连接池,同时设置连接池大小,经测试,可以显著提高访问数据库时的速度. 连接字符串: connectionStrings> <add ...
随机推荐
- MVC 4 插件化架构简单实现实例篇
ASP.NET MVC 4 插件化架构简单实现-实例篇 先回顾一下上篇决定的做法: 1.定义程序集搜索目录(临时目录). 2.将要使用的各种程序集(插件)复制到该目录. 3.加载临时目录中的程序集 ...
- [转]Patching the Mach-o Format the Simple and Easy Way
From:http://secureallthethings.blogspot.jp/2014/08/patching-mach-o-format-simple-and-easy.html I'm r ...
- [整理]在命令行执行 UIAutomation
instruments -t /Developer/Platforms/iPhoneOS.platform/Developer/Library/Instruments/PlugIns/Automati ...
- C语言可变参数函数的编写
1. 引言 C语言我们接触的第一个库函数是 printf(“hello,world!”);其参数个数为1个. 然后,我们会接触到诸如: printf(“a=%d,b=%s,c=%c”,a,b,c);此 ...
- 《12个有趣的C语言问答》(4)
C语言面试问答——<12个有趣的C语言问答>评析(4) 前文链接:http://www.cnblogs.com/pmer/p/3324063.html 8,Making changes i ...
- asp.net的ajax以及json
asp.net的ajax以及json 来现在这家公司以前,从未接触过webform,以前在学校做的项目是php,java以及asp.net mvc的,当时asp.net mvc用的是razor引擎,所 ...
- Linux下的IO监控与分析
Linux下的IO监控与分析 近期要在公司内部做个Linux IO方面的培训, 整理下手头的资料给大家分享下 各种IO监视工具在Linux IO 体系结构中的位置 源自 Linux Performan ...
- IL反编译的实用工具
初识Ildasm.exe——IL反编译的实用工具 Ildasm.exe 概要: 一.前言: 微软的IL反编译实用程序——Ildasm.exe,可以对可执行文件(ex,经典的控制台Hello Wor ...
- MySQL中函数、游标、事件、视图基本应用举例(代码)
MySQL中function用户自定义函数c,fun,fun是面向过程的实现方式只能传入参数,或不传入参数,不能传出参数,必有返回值函数中是不能有create table drop table之类的语 ...
- 这几天有django和python做了一个多用户博客系统(可选择模板)
这几天有django和python做了一个多用户博客系统(可选择模板) 没完成,先分享下 断断续续2周时间吧,用django做了一个多用户博客系统,现在还没有做完,做分享下,以后等完善了再慢慢说 做的 ...