UIImageView 在加载更大的图像后调整大小

Posted

技术标签:

【中文标题】UIImageView 在加载更大的图像后调整大小【英文标题】:UIImageView resize after load larger image 【发布时间】:2013-01-26 21:23:28 【问题描述】:

我在 IB 有一个UIImageView。我设置了框架和图像。重点是我的图像是 300x193,但稍后我想更新更大的图像并在此视图上使用一些 contentMode

所以一开始我有:

所以我很清楚框架应该保持310 116 300 193,我想保持这种状态(这就是我使用Scale To FillContentMode的原因。

所以我在这里有图像选择器,当我使用此代码时:

-(void) imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info

    [self.imView setImage:[info objectForKey:UIImagePickerControllerOriginalImage]];

    [self dismissModalViewControllerAnimated:YES];


我的 UIImageView 框架更改为:

(UIImageView *) $0 = 0x1c5c1ae0 <UIImageView: 0x1c5c1ae0; frame = (-160 20; 640 1136); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x1c5c1b40>> - (null)

为什么?

【问题讨论】:

【参考方案1】:

只需为您的图像视图添加宽度和高度限制。我不知道你为什么没有自动得到这些,我是在拖入图像视图时得到的。

【讨论】:

【参考方案2】:

我相信这是由自动布局引起的。布局允许视图增长以适应不同大小的图像,它确实如此。您是否有一个带有 >= 登录的蓝色“用户”约束?

在 IB 中的“显示文件检查器”下,您可以取消选中“使用自动布局”,您将看到行为更改以匹配您想要的内容。要使 Autolayout 生效并获得您想要的行为,您可能需要查看每个约束以及它如何影响该视图的大小。

【讨论】:

即使我取消勾选自动布局效果还是一样。 奇数。视图不应自行调整大小。如果您没有在图像上选择“剪辑子视图”;某些模式将允许图像绘制到外部,使其看起来改变了视图的大小。但是, contentMode = 'scale to fill' 不应在框架外绘制。不幸的是,我无法重现您所描述的内容。 来自 Apple 的 UIImageView 文档:“设置图像属性不会改变 UIImageView 的大小。调用 sizeToFit 来调整视图的大小以匹配图像。”也许开始一个新的应用项目并单独测试这种行为。【参考方案3】:

尝试将您的查看模式从 Scale to Fill 更改为 Aspect to Fit

【讨论】:

但是 Ascpect To Fit 不是我想要的行为。这不是填充 UIImageView 的解决方案。 您希望图像在填充图像视图时被拉伸和/或扭曲?

以上是关于UIImageView 在加载更大的图像后调整大小的主要内容,如果未能解决你的问题,请参考以下文章

三个 UIImageView 水平堆叠并缩放

UITableView 中多张图片的延迟加载

iOS UIImageView 约束在表格单元格中不起作用

为啥缩放以填充比 UIImageVIew 尺寸更大的图像? (使用快速)

画布图像大小调整使文件更大[重复]

ImageMagick - 较小的调整大小的图像是一个更大的文件大小