Ios 使用自动布局更改UIImageView帧大小

Ios 使用自动布局更改UIImageView帧大小,ios,uiimageview,autolayout,Ios,Uiimageview,Autolayout,我已经使用AutoLayout设置了UIImageView。我已经为顶部、底部、前导和尾随设置了限制条件(我希望宽度和高度根据手机的大小进行更改)。在我的属性检查器中,它还显示图像视图的宽度和高度。由于某些原因,在首次加载视图时,会忽略顶部空间到顶部布局的约束,图像会离开屏幕,并使用IB中的高度(332)。添加照片后,视图将按预期调整大小。我记录了图像视图的帧高度,它正在更改。我不明白,我以为图像视图的框架总是一样的。我没有得到任何自动布局错误,一切都是蓝色的 回顾:为什么我的self.sele

我已经使用AutoLayout设置了UIImageView。我已经为顶部、底部、前导和尾随设置了限制条件(我希望宽度和高度根据手机的大小进行更改)。在我的属性检查器中,它还显示图像视图的宽度和高度。由于某些原因,在首次加载视图时,会忽略顶部空间到顶部布局的约束,图像会离开屏幕,并使用IB中的高度(332)。添加照片后,视图将按预期调整大小。我记录了图像视图的帧高度,它正在更改。我不明白,我以为图像视图的框架总是一样的。我没有得到任何自动布局错误,一切都是蓝色的


回顾:为什么我的self.selectPhoto(屏幕截图中显示的大图像视图)会改变帧?我仔细检查了苹果的文档,它没有说任何关于根据图像大小改变帧的内容。这很重要,因为我正在根据帧大小调整图像的大小

我知道,如果不限制宽度和高度,使用AutoLayout时,ImageView会很有趣。许多图像比imageView大得多,因此您可以看到imageView变大(可能是因为它无法计算其固有的内容大小)。我以前通过限制imageView的宽度和高度解决了这个问题,但很明显,您希望自己的视图随设备大小而动态变化


我建议在项目中使用一个单独的UIView,它是您想要的大小,并将UIImageView嵌入其中。为两者设置正确的约束条件,这将解决您的问题

如果您使用的是自动布局

步骤1:选择UIImageView,单击右下角的pin

步骤2:添加高度和宽度约束

步骤3:选择约束并将其拖动到.h文件中

步骤4:使用下面的代码在.m文件中设置所需的高度和宽度

_heightConstraint.constant = 100;
_widthConstraint.constant = 100;

必须为“图像视图”提供宽度和高度约束,并将“图像视图”放置在uiview中,并为uiview提供“前导”和“平移”以及“顶部”和“底部”约束
_heightConstraint.constant = 100;
_widthConstraint.constant = 100;