我在用着storyboard
and autolayout
,并将 IB 中的约束设置为IBOutlet
在相应的视图控制器中。我正在阅读几篇关于如何将纵向和横向的约束更新为不同的帖子,但我仍然不确定应该如何执行此操作:
- 我应该设置新的限制吗
-viewWillTransitionToSize:withTransitionCoordinator:
方法,或者在updateViewConstraints
method?
- 当设置新的约束时,我应该调用
[self.view setNeedsUpdateConstraints];
, or layoutIfNeeded
, or setNeedsLayout
?
-
例如,我应该如何更新某个约束的常量:
self.myConstraint.constant = 30.0
或做:
[self.view removeConstraint:self.passwordViewHeight];
self.passwordViewHeight = [NSLayoutConstraint constraintWithItem:self.passwordView
attribute:NSLayoutAttributeHeight
relatedBy:NSLayoutRelationEqual
toItem:nil
attribute:NSLayoutAttributeNotAnAttribute
multiplier:1.0
constant:34.0];
[self.view addConstraint:self.passwordViewHeight];
提前致谢
使用 viewWillTransitionToSize 方法检测方向变化。当设备方向即将改变时,将调用此方法。
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator (id<UIViewControllerTransitionCoordinator>)coordinator{
//change constraints
}
或者,如果要在方向更改后更改约束,请在 viewWillTransitionToSize 方法中使用协调器对象的 animateAlongsideTransition 方法。
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator{
[coordinator animateAlongsideTransition:nil completion:^(id<UIViewControllerTransitionCoordinatorContext> _Nonnull context) {
//change constraints
}];
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)