需求说明:有很长的图片只能显示在一定的范围内,我们设置图片内容模式似乎都不是很好的体验。可能往往我们需要在一定的范围内,只显示这个长图最上面的部分,点击之后展开才滚动查看长图。
思路:我们在图片下载回来之后,重新绘制图片。这样可以保证图片最上面在我们想要展示的区域内。
// 设置图片
[self.imageView sd_setImageWithURL:[NSURL URLWithString:topic.large_image] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
// 如果是长图才需要绘制
if(topic.isBigPicture == NO) return;
// 开启图形上下文
UIGraphicsBeginImageContextWithOptions(topic.pictureF.size, YES, 0.0);
// 将下载完成的image对象绘制到图形上下文
CGFloat width = topic.pictureF.size.width;
CGFloat height = width * image.size.height / image.size.width;
[image drawInRect:CGRectMake(0, 0, width, height)];
// 从当前图形上下文取出图片
self.imageView.image = UIGraphicsGetImageFromCurrentImageContext();
// 关闭图形上下文
UIGraphicsEndImageContext();
}];