iOS开发 ImageView网络请求得到的图片设置UIImageView不变形处理
2016-09-21 15:25
816 查看
有时候在设置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;
}
}
如果是从本地获取到的图片,[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开发 ImageView网络请求得到的图片不变形处理
- iOS开发 Xcode UIImageView设置一个圆形的图片
- ios UIImageView 设置图片 不变形
- IOS开发中对UIImageView设置圆角
- uibutton和uiimageview图片不变形设置
- iOS开发:UIImage 图片处理:截图,缩放,设定大小,存储
- ios开发 button或UIimageview加载图片显示颜色不显示图片
- iOS开发UIImage和UIImageView属性介绍,实现图片动画,实现开始/停止按钮效果
- iOS开发-UIImageView高效设置Radius
- ios UIImageView处理图片大小问题
- 【IOS开发】UIImageView的用法 图片
- iOS开发之UIImageView的图片变化动画
- iOS开发的一些小技术:让UIImage有缩放功能、控制log的输出、xcode修改文件注释、随机数的使用、在UIImageView 中旋转图像、在Quartz中如何设置旋转点、创建.plist文件并存储
- iOS项目开发实战——UIImageView的使用与图片显示模式
- iOS UIImage UIImageView 展示图片 不变形 处理
- 【iOS开发】关于显示一连串图片组成动画效果UIImageView的使用
- ios的UIImageView显示图片防止图片变形
- iOS UIImageView设置多张图片
- iOS根据网络图片的size大小设置UIImageView的大小
- ios中UIImageView展现图片的不同处理方式