自动布局约束:如何使视图在resize时保持其宽高比?

在界面生成器中,我们可以固定高度,引脚宽度,使两个视图的宽度相等,但是如何设置约束,以便在视图大小调整时保持其宽高比?

在我的具体情况,我有我的视图控制器中的UIImageView。 当视图resize时,我希望我的图像视图resize,但保持3:2宽高比。 IB可以做到吗? 是否有可能使用代码?

谢谢!

您可以通过控制从视图拖动到自身并select宽高比来在IB中添加纵横比约束。

我不认为你可以在IB中做到这一点,但在代码中,可以这样做(iv是我图片视图的出口):

[self.iv removeConstraints:self.iv.constraints]; NSLayoutConstraint *con1 = [NSLayoutConstraint constraintWithItem:self.iv attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:100]; NSLayoutConstraint *con2 = [NSLayoutConstraint constraintWithItem:self.iv attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:self.iv attribute:NSLayoutAttributeWidth multiplier:.66 constant:0]; [self.iv addConstraints:@[con1,con2]]; 

这明确地将高度设置为100,并将宽高比设置为3:2。

苹果公司的这份指南真的帮了我很大的忙 – 它概述了两种方法,一种是closures某些子视图的AutoLayout并直接设置框架,另一种是通过代码使用纯AutoLayout。

https://developer.apple.com/library/ios/technotes/tn2154/_index.html