我使用AutoLayout设置了UIImageView。我已经为top,bottom,leading和trailing设置了约束(我希望宽度和高度根据手机的大小而改变)。在我的属性检查器中,它还显示图像视图的宽度和高度。出于某种原因,首次加载视图时,将忽略顶部空间到顶部布局约束,并且图像离开屏幕,并且使用IB中的高度(332)。添加照片后,视图会按预期调整大小。我NSLogged图像视图的帧高,它正在改变。我不明白,我认为图像视图的FRAME总是一样的。我没有收到任何自动布局错误,一切都是蓝色的。
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,并且没有根据图像大小说明有关帧更改的内容。这很重要,因为我根据帧大小调整了图像大小。
答案 0 :(得分:3)
如果您使用的是AutoLayout。
步骤1:选择UIImageView,点击右下方的图钉。
第2步:添加高度和宽度约束。
步骤3:选择约束并将约束拖动到.h文件。
步骤4:使用以下代码在.m文件中设置所需的高度和宽度。
_heightConstraint.constant = 100;
_widthConstraint.constant = 100;
答案 1 :(得分:0)
我知道,当你不限制宽度和高度时,使用AutoLayout可以使用imageViews。许多图像比imageView大得多,因此您可以看到imageView增长到一个巨大的尺寸(可能是因为它无法计算其内在的内容大小)。我之前通过约束imageView的宽度和高度解决了这个问题,但显然你希望你的设备大小是动态的。
我建议在项目中使用一个单独的UIView,它是你想要的大小,并在其中嵌入你的UIImageView。为两者设置正确的约束,这应该可以解决您的问题。