Autolayout Constraints以编程方式添加

时间:2015-08-21 16:26:43

标签: ios autolayout constraints

我无法自动添加一些约束。通常当我在Storyboard中添加约束时,我单击该项并向其添加约束(对齐中心x或前缘等)

但是,当我以编程方式添加约束时,我不确定如何获得相同的结果。使用下面的代码,我希望将_spinner视图设置为它的父_loadingView的宽度的一半和高度的一半。

[_loadingView addConstraint:[NSLayoutConstraint constraintWithItem:_spinner
                                                       attribute:NSLayoutAttributeWidth
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:_loadingView
                                                      attribute:NSLayoutAttributeWidth
                                                     multiplier:0.5
                                                       constant:0]];

[_loadingView addConstraint:[NSLayoutConstraint constraintWithItem:_spinner
                                                      attribute:NSLayoutAttributeHeight
                                                      relatedBy:NSLayoutRelationEqual
                                                         toItem:_loadingView
                                                      attribute:NSLayoutAttributeHeight
                                                     multiplier:0.5
                                                       constant:0]];

然而,运行此操作会产生一些冲突。 _loadingView有约束声明它应该是它的父视图的80%宽度和高度,这是ViewController.view所以_loadingView应该是ViewController.view的80%,然后_spinner应该是_loadingView的50%。但是通过在spinnerview上添加约束,它会导致冲突。

所以我认为它需要一个x和y坐标,所以我指定将微调器放在_loadingView的中心,如下所示:

[_loadingView addConstraint:[NSLayoutConstraint constraintWithItem:_spinner
                                                         attribute:NSLayoutAttributeCenterY
                                                         relatedBy:NSLayoutRelationEqual
                                                            toItem:_loadingView
                                                         attribute:NSLayoutAttributeCenterY
                                                        multiplier:1
                                                          constant:0]];

[_loadingView addConstraint:[NSLayoutConstraint constraintWithItem:_spinner
                                                         attribute:NSLayoutAttributeCenterX
                                                         relatedBy:NSLayoutRelationEqual
                                                            toItem:_loadingView
                                                         attribute:NSLayoutAttributeCenterX
                                                        multiplier:1
                                                          constant:0]];

但这仍然会产生冲突,并且不会添加微调器约束。 enter image description here

0 个答案:

没有答案