我无法自动添加一些约束。通常当我在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]];