将大 UIImage 比例下载到 UIImageView

Posted

技术标签:

【中文标题】将大 UIImage 比例下载到 UIImageView【英文标题】:Downloaded big UIImage scale to UIImageView 【发布时间】:2015-02-25 07:49:33 【问题描述】:

我正在下载一个相当大的图像并将其存储在UIImage 中。然后我将UIImage 添加到UIImageView 以显示,但UIImage 太大了,因此它只显示图像的一部分(它的左上角)。我希望它显示整个 UIImage,缩小图像以适应 UIImageView。

我查看了很多不同的答案,但我无法让它们中的任何一个起作用。我已将UIImageView 的缩放模式设置为 Aspect Fill、fit 和你的名字(也尝试过剪辑子视图),但没有任何效果。

代码如下:

UIImage *trackImg = [UIImage imageWithContentsOfFile:trackImagePath];
_backgroundImage.image = trackImg;

代码很简单,但它所做的只是下载一个 UIImage,并将其设置为 UIImageview 的图像。 UIImageView 在 interface-builder 中配置。

提前致谢。

【问题讨论】:

你能展示你的代码吗? 对不起,现在添加。 你设置了_backgroundImage.contentMode = UIViewContentModeScaleAspectFit; ?那么你检查 _backgroundImage 框架了吗? 哦,这是因为框架的大小已关闭。我把约束设置错了,搞砸了 -.-' 仍然习惯了这个新的约束系统(有时觉得有点难),我最终找错了地方。非常感谢,非常抱歉。 【参考方案1】:

您可以使用 scaleToSize 方法调整图像大小:

-(UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize 
    UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0);
    // Here pass new size you need
    [image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)];
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;

传递您的 UIImage,它应该会调整大小。调用方法为:

[self imageWithImage:[UIImage imageNamed:@"yourImage.png"] scaledToSize:CGSizeMake(25,45)];

【讨论】:

【参考方案2】:

错误在于 imageView 的大小(感谢 Huy Nghia)。我设置了错误的约束,导致 imageView 的大小与我预期的不同,我无法轻易检测到,因为我希望它填满整个屏幕。

如果其他人遇到困难,请尝试确保您的限制是正确的。

【讨论】:

以上是关于将大 UIImage 比例下载到 UIImageView的主要内容,如果未能解决你的问题,请参考以下文章

用比例绘制 UIImage 并平移

按宽度按比例调整 UIImage 的大小

从iphone中的固定宽度找到UIImage的比例高度

使 UIImageView 及其 UIImage 按比例缩放而无需额外的填充

将大数据从 sql server 下载到 iOS [关闭]

如何按比例缩放UIImageView