自动布局不断拉伸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
完成后,您应该能够在屏幕右侧的尺寸检查器中看到您的约束(紫色框)
我的问题是与ContentHuggingPriority
和ContentCompressionResistancePriority
。
第一个控制让视图“拥抱”图像(保持靠近而不扩展)以及后者控制视图的压缩程度有多重要。
我们使用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];