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 Fill
ContentMode
的原因。
所以我在这里有图像选择器,当我使用此代码时:
-(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 在加载更大的图像后调整大小的主要内容,如果未能解决你的问题,请参考以下文章