谁改变了图像的大小? SDWebImage或ContentMode

时间:2016-04-10 07:41:46

标签: objective-c sdwebimage contentmode

我使用SDWebImage来设置这样的图像:

    [self.imageView sd_setImageWithURL:topicModel.large_image] 
        placeholderImage:nil 
        options:0 
        progress:^(NSInteger receivedSize, NSInteger expectedSize) {

    } completed:^(UIImage *image, 
        NSError *error, 
        SDImageCacheType cacheType, 
        NSURL *imageURL) { 
}];

之后,我将imageView的contentMode设置为:

    if (topicModel.isBigPicture) {
        self.imageView.contentMode = UIViewContentModeTop;
        self.imageView.clipsToBounds = YES;
    }else {
        self.imageView.contentMode = UIViewContentModeScaleAspectFill;
        self.imageView.clipsToBounds = NO;
    }

imageView的大小为(355,200),
图像的大小大于比imageView,宽度和高度。

众所周知,
如果topicModel是bigPicture,则contentMode将是UIViewContentModeTop。 UIViewContentModeTop保持相同的大小,只是定位调整。

但是我发现了一个问题? 在我的情况下,图像的大小将转换为(300,XXX),XXX似乎计算(image.realHeight * 300.0 / image.realWidth)
实际上我不会改变项目中图像的大小。

以下是我的问题:
我的代码有什么问题?
如何使图像的宽度与imageView的宽度相同?

1 个答案:

答案 0 :(得分:0)

最后,我找到了答案 原因是我使用的是最新版本的SDWebImage

这是解决方案:-)

如果您想获取原始图片,则必须更改SDWebImage/SDWebImageDecoder.m中的代码,如下所示:

    CGContextRelease(context);  
    //add this method
     UIImage *decompressedImage = [UIImage imageWithCGImage:decompressedImageRef];

    //delete this method
     UIImage *decompressedImage = [UIImage imageWithCGImage:decompressedImageRef scale:image.scale orientation:image.imageOrientation];
  CGImageRelease(decompressedImageRef);  

    return decompressedImage;
  }

如果您想了解更多详情,可以看到以下链接
SDWebImage ---- Images from web-url too small when using v. 3.7.4 and above