自动布局不断拉伸UIImageView

我使用自动布局,这让我疯狂。 我尽我所能来阻止UIImageView的扩展。 我不知道为什么这样做。 我尝试使用约束,解决自动布局问题。 现在,唯一的解决scheme就是自动布局自动布局。

任何人都可以告诉我为什么xcode完全无视我的约束? 我希望UIImage保持为320×320,当我明确地把它设置为,但是没有…

我想发布图片,但该网站不会让我,我想添加代码到这个问题,以便它是更具体的,但根本没有代码。 我只是从故事板拖动“UIImageView”,使它变小,设置约束,它只是忽略我的代码。

你会想确保你的UIImageView被设置为剪辑到界限。 如果没有,图像将溢出视图,并将显示不正确延伸(即使在现实中)。

在界面生成器中,确保剪辑子视图框被选中。

在这里输入图像说明

如果您不使用接口生成器,则以下代码将执行相同的操作:

 yourImageView.clipsToBounds = YES; 

使用自动布局时,“大小”检查器中的值几乎被忽略。

你在这里输入的任何内容都将被忽略

你可能会期望,如果在Size Inspector的框中input一个数字,Xcode会自动创build约束来反映你input的内容,但是不会。 您需要为您的UIImageView的高度和宽度自行创build“Pin”约束。

  • select故事板上的图像视图
  • 点击故事板屏幕右下方的“Pin”button
  • 在“宽度”和“高度”字段中input所需的大小,并确保选中框
  • 点击“添加2约束”button

    在这里输入图像说明

完成后,您应该能够在屏幕右侧的尺寸检查器中看到您的约束(紫色框)

在这里输入图像说明

我的问题是与ContentHuggingPriorityContentCompressionResistancePriority

第一个控制让视图“拥抱”图像(保持靠近而不扩展)以及后者控制视图的压缩程度有多重要。

我们使用PureLayout ,所以修复它的代码是:

 [NSLayoutConstraint autoSetPriority:ALLayoutPriorityRequired forConstraints:^{ [myImageView autoSetContentCompressionResistancePriorityForAxis:ALAxisHorizontal]; [myImageView autoSetContentHuggingPriorityForAxis:ALAxisHorizontal]; }]; 

(我的问题只在横轴上)

2016年5月15日:更新为PureLayout v3语法。 如果您使用的版本<= 2只是把UIView而不是NSLayoutConstraint 。 感谢Rudolf J !

我有同样的问题。 我将一个UIImageView添加到原型单元格中,并希望将其alignment到文本旁边,但是在应用约束时它会保持拉伸图像。 在我的情况下,我将Image View的“Mode”属性改为“Aspect Fit”,效果很好。 在这里输入图像说明

您可以尝试以编程方式添加UIImageView。 在你的viewDidLoad方法或你想要的地方调用这段代码。

 UIImageView *yourImageView = [[UIImageView alloc]initWithFrame:CGRectMake(50.0f, 50.0f, 320.0f, 320.0f)]; // x and y coordinates, width and height of UIImageView [yourImageView setImage:[UIImage imageNamed:@"your_image.png"]]; [yourImageView setContentMode:UIViewContentModeCenter]; // you can try use another UIViewContentMode [self.view addSubview:yourImageView];