[英]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.