标签:
实现网络图片根据UIImageView的大小来等比例缩放显示。
苹果自带的有设置UIImageView的contentMode属性,
UIViewContentModeScaleToFill
UIViewContentModeScaleAspectFit
UIViewContentModeScaleAspectFill
UIViewContentModeRedraw
UIViewContentModeCenter
UIViewContentModeTop
UIViewContentModeBottom
UIViewContentModeLeft
UIViewContentModeRight
UIViewContentModeTopLeft
UIViewContentModeTopRight
UIViewContentModeBottomLeft
UIViewContentModeBottomRight
注意以上几个常量,凡是没有带Scale的,当图片尺寸超过 ImageView尺寸时,只有部分显示在ImageView中。UIViewContentModeScaleToFill属性会导致图片变形。 UIViewContentModeScaleAspectFit会保证图片比例不变,而且全部显示在ImageView中,这意味着ImageView 会有部分空白。UIViewContentModeScaleAspectFill也会证图片比例不变,但是是填充整个ImageView的,可能只有部 分图片显示出来。
我们也可下载图片获取图片的原始宽高,然后根据比例重新设置图片的大小也是可以的,不过这种的话就可能会出现问题了,先下载获取一次之后又给imageView赋值时就会出现缓慢延迟的现象,这是在赋值时又下了一遍,不赞成使用。
//获取网络图片的宽高
+ (CGSize)getImageSizeWithURL:(NSURL *)url {
// 1.创建CGImageSourceRef
CGImageSourceRef imageSource = CGImageSourceCreateWithURL((CFURLRef)url, NULL);
CGFloat width = 0.0f, height = 0.0f;
if (imageSource)
{
// 获取图像的属性信息
CFDictionaryRef imageProperties = CGImageSourceCopyPropertiesAtIndex(imageSource, 0, NULL);
if (imageProperties != NULL)
{
CFNumberRef widthNum = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelWidth);
if (widthNum != NULL) {
NSNumber *num = (__bridge NSNumber *)(widthNum);
width = [num floatValue];
// CFNumberGetValue(widthNum, kCFNumberFloatType, &width);
}
CFNumberRef heightNum = CFDictionaryGetValue(imageProperties, kCGImagePropertyPixelHeight);
if (heightNum != NULL) {
NSNumber *num = (__bridge NSNumber *)(heightNum);
height = [num floatValue];
// CFNumberGetValue(heightNum, kCFNumberFloatType, &height);
}
CFRelease(imageProperties);
}
CFRelease(imageSource);
}
return CGSizeMake(width, height);
}
第三种,就是使用SDWebImage的方法了,也可以实现吧,效果还可以
[self.toyImgView sd_setImageWithURL:[NSURL URLWithString:model.picture] placeholderImage:nil options:SDWebImageRetryFailed completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
NSLog(@"*****%lf",image.size.width);
NSLog(@"******%lf",image.size.height);
}];
大家根据不同的情况使用不同的方法吧。
标签:
原文地址:http://www.cnblogs.com/19940122yzc/p/5698881.html