0

我使用 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的宽度相同?

4

1 回答 1

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 ---- 使用 v. 3.7.4 及更高版本时来自 web-url 的图像太小

于 2016-04-15T08:20:04.150 回答