【问题标题】:iOS: Auto Layout vs autoresizingMask - resizing whole view to fill?iOS:自动布局与 autoresizingMask - 调整整个视图的大小以填充?
【发布时间】:2013-01-22 03:52:50
【问题描述】:

我有一个使用自动布局构建的故事板。在该故事板中,我在多个位置嵌入了一个UIViewController 子类(ButtonGridViewController),每个位置的大小都不同。 ButtonGridViewController 的视图在 xib 中定义。

我需要的是对整个 ButtonGridViewController 的视图进行简单的缩放以填充我嵌入它的视图。使用旧的 struts-and-springs 方法,这是微不足道的 - 只是将所有子视图设置为双向调整大小,瞧,小菜一碟。

我如何使用约束来完成同样的事情?对于它的价值,xib 只包含一个主视图,它是矩形的,并且有 4 个子视图 - 每个子视图 - 一个按钮 - 排列在 2x2 网格中。我希望所有内容(包括按钮和间距)都可以缩放和/或拉伸以填充它要进入的视图。

谢谢!

【问题讨论】:

  • 嵌入是什么意思?你在使用容器视图吗?
  • 容器视图在一种情况下;在所有其他情况下,只需实例化 ButtonGridViewController 并以编程方式将其视图作为子视图添加到现有 UIView。
  • 如果您没有理由不能对所有人使用容器视图,那会容易得多。该视图将自动适应容器视图。
  • 唉,我不能。但是,我可以不使用任何容器视图(即始终将视图控制器的视图作为子视图添加到现有的 uiview),如果这至少有助于使其更加一致。

标签: ios interface-builder xib autolayout


【解决方案1】:

要使用约束完成同样的事情,您需要将超级视图的前导、尾随、顶部和底部空间设置为 0。见下文:

//load the ButtonGridViewController from a xib
[[NSBundle mainBundle] loadNibNamed:@"..." owner:self options:nil];

//get the view add it
[self.view addSubView:self.myGridView];

//turn off springs and struts
[self.view setTranslatesAutoresizingMaskIntoConstraints:NO];

//add constraints to fill parent view
NSArray *arr;

//horizontal constraints
arr = [NSLayoutConstraint constraintsWithVisualFormat:@"|[vw]|"
                                                options:0
                                                metrics:nil
                                              views:@{@"vw":self.myGridView}];
[self.view addConstraints:arr];

//vertical constraints
arr = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[vw]|"
                                                options:0
                                                metrics:nil
                                                  views:@{@"vw":self.myGridView}];
[self.view addConstraints:arr];

【讨论】:

  • 同样的事情对我不起作用。我有相同的场景,我在视图中添加子视图。视图在 Storyboard 中,子视图在 .xib 中。当我像上面那样以编程方式添加约束时,我会同时得到约束并且它会中断......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-16
  • 2018-09-11
  • 1970-01-01
相关资源
最近更新 更多