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

Jos*_*Lin 31 xcode ios autolayout

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

在我的特定情况下,我的视图控制器中有一个UIImageView.当视图调整大小时,我希望我的图像视图调整大小,但保持3:2的宽度:高度比.在IB中可以做到吗?是否可以使用代码执行此操作?

谢谢!

小智 36

您可以通过控制从视图拖动到自身并选择纵横比来在IB中添加纵横比约束.


rde*_*mar 34

我不认为你可以在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]];
Run Code Online (Sandbox Code Playgroud)

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