我应该如何以编程方式调整在Storyboard文件中创建的UIImageView的尺寸以匹配特定图像的尺寸?将UIImageView的框架或边界设置为所选图像的框架或边界不会改变Xcode iOS模拟器中imageView的大小。我已经看过许多其他类似的问题并尝试了他们的答案,但他们给出的修复程序似乎都没有用到目前为止。
以下是用于尝试调整UIImageView大小的代码:
-(void)viewWillAppear:(BOOL)animated{
//Get selected image
UIImage *selectedImage=[UIImage imageNamed:selectedItem.pictureName];
//Set imageView's image to selected image
imageView.image=selectedImage;
//Make new frame with dimensions of selected image and same origin
CGRect newImageViewFrame=CGRectMake(imageView.frame.origin.x,imageView.frame.origin.y,selectedImage.size.width,selectedImage.size.height);
//Set imageView's frame to match that of the newly created frame
imageView.frame=newImageViewFrame;
[super viewWillAppear:animated];
}
imageView正确调整大小的唯一方法是将静态imageView替换为以编程方式创建的imageView,以匹配selectedImage
的框架。从头开始创建一个新的UIImageView时,这应该是有用的,但在尝试调整现有UIImageView的大小时却不行。
我的项目当前正在使用AutoLayout,但我没有向相对的UIImageView添加任何约束。这可能是问题的来源吗?
答案 0 :(得分:2)
我的项目当前正在使用AutoLayout,但我没有向相对的UIImageView添加任何约束。这可能是问题的来源吗?
是。如果不指定约束,则会自动获得“固定帧”约束。图像视图的约束如下所示:
<NSIBPrototypingLayoutConstraint:0x7f95a943bad0 'IB auto generated at build time for view with fixed frame' H:|-(87)-[UIImageView:0x7f95a9b112b0](LTR) (Names: '|':UIView:0x7f95a974e7c0 )>,
<NSIBPrototypingLayoutConstraint:0x7f95a943bfe0 'IB auto generated at build time for view with fixed frame' V:|-(217.5)-[UIImageView:0x7f95a9b112b0] (Names: '|':UIView:0x7f95a974e7c0 )>,
<NSIBPrototypingLayoutConstraint:0x7f95a943c030 'IB auto generated at build time for view with fixed frame' H:[UIImageView:0x7f95a9b112b0(146)]>,
<NSIBPrototypingLayoutConstraint:0x7f95a943c080 'IB auto generated at build time for view with fixed frame' V:[UIImageView:0x7f95a9b112b0(132)]>,
因此,当重新应用固定帧约束时,您尝试修改帧将被覆盖。
您需要做的是建立水平和垂直位置约束。执行此操作后,您将不再获得固定帧约束。由于您没有约束大小,因此将由intrinsicContentSize
属性确定,该属性将是图像的大小。
还有一个细节是,如果您没有在故事板中设置图像,则需要在Size Inspector中指定占位符内在内容大小,否则您将在IB中找到缺少的约束错误。