0

我正在使用UIStoryboard带有自动布局和大小类的 a 来处理在横向模式下旋转 iPhone。我正在动态地将视图大小调整为两个容器,每个容器都是矩形(如 300x260),并试图将方形视图放入该容器中。我希望视图能够选择矩形的较小尺寸并适当地调整其大小:

例如:

  • 在 300x260 容器中,我希望我的视图是 260x260 正方形
  • 在 240x300 容器中,我希望我的视图是 240x240 正方形

夸张的例子:

在此处输入图像描述

是否有一些聪明的自动布局技巧可以用来确保视图将使用情节提要选择其父级的较小尺寸(大小或宽度)?我尝试了 1:1 纵横比约束,但视图仍在裁剪(选择不正确的尺寸)

4

1 回答 1

1

除了比率约束之外,您还需要添加两个约束。一个指定内部视图的高度小于外部视图的高度,一个指定内部视图的宽度小于外部视图的宽度。

您可能可以在 Interface Builder 中执行此操作,但在代码中它将是这样的:

UIView *outerView = ...;
UIView *innerView = ...;
[outerView addConstraints:@[
     [NSLayoutConstraint constraintWithItem:innerView
                                  attribute:NSLayoutAttributeWidth
                                  relatedBy:NSLayoutRelationLessThanOrEqual
                                     toItem:outerView
                                  attribute:NSLayoutAttributeWidth
                                 multiplier:1.0
                                   constant:0.0],
     [NSLayoutConstraint constraintWithItem:innerView
                                  attribute:NSLayoutAttributeHeight
                                  relatedBy:NSLayoutRelationLessThanOrEqual
                                     toItem:outerView
                                  attribute:NSLayoutAttributeHeight
                                 multiplier:1.0
                                   constant:0.0],
]];

您可能还需要添加低优先级约束以使内部视图的大小大于零。 在此处输入图像描述

在此处输入图像描述

于 2014-11-24T17:03:33.573 回答