6

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

我需要的是让整个ButtonGridViewController视图简单地缩放以填充我嵌入的视图。使用旧的 struts-and-springs 方法,这很简单——只需将所有子视图设置为调整大小在两个方向上,瞧,小菜一碟。

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

谢谢!

4

1 回答 1

11

要使用约束完成同样的事情,您需要将超级视图的前导、尾随、顶部和底部空间设置为 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];
于 2013-02-12T01:09:56.683 回答