繁体   English   中英

UIImageView使用AutoLayout更改框架大小

[英]UIImageView Frame size changing using AutoLayout

我已经使用AutoLayout设置了UIImageView。 我已经设置了顶部,底部,前导和尾随的约束(我希望宽度和高度根据手机的大小而变化)。 在我的属性检查器中,它还显示图像视图的宽度和高度。 由于某些原因,在第一次加载视图时,将忽略“顶部空间到顶部布局”约束,并且图像离开屏幕,并使用IB中的高度(332)。 添加照片后,视图将按预期调整大小。 我NSLogged图像视图的框架高度,并且它正在更改。 我不明白,我认为图像视图的帧始终相同。 我没有收到任何“自动布局”错误,所有内容均为蓝色。 在此处输入图片说明

UIImage *imageToView = [existingImage resizedImageWithBounds:self.selectPhoto.frame.size];//Resize the image for better performance
 self.selectPhoto.contentMode =UIViewContentModeScaleAspectFit;
 NSLog(@"Select Photo Frame Size Height is %f", self.selectPhoto.frame.size.height); //The first time this screen loads, this height is 332.  Every other time (after the user enters a new photo, the height is 310 which is what I want.
self.selectPhoto.image = imageToView;

回顾:为什么我的self.selectPhoto(这是屏幕快照中显示的大图像视图).frame发生了变化? 我仔细检查了Apple Docs,它没有说根据图像大小更改框架。 这很重要,因为我正在根据帧大小调整图像大小。

如果您使用的是自动版式。

第1步:选择UIImageView,单击右下角的图钉。

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

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

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

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

我知道当您不限制宽度和高度时,imageViews可以与AutoLayout一起使用。 许多图像都比imageView大得多,因此您可以看到imageView增长到很大的尺寸(可能是因为无法计算其固有内容尺寸)。 我已经通过限制imageView的宽度和高度来解决了这个问题,但是显然您希望您的设备随设备大小动态变化。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM