App*_*Dev 8 rotation orientation ios autolayout nslayoutconstraint
我正在使用storyboard和autolayout,并IBOutlet在相应的视图控制器中设置IB 中的约束.我正在阅读几篇关于如何更新纵向和横向不同的约束的帖子,但我仍然不确定应该怎么做:
-viewWillTransitionToSize:withTransitionCoordinator:方法或updateViewConstraints方法中设置新约束吗?[self.view setNeedsUpdateConstraints];,或者layoutIfNeeded,或者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];
Run Code Online (Sandbox Code Playgroud)
提前致谢
小智 1
最好的方法是更改常量,而不是删除约束并再次重新创建它。从长远来看,仅对常数进行加或减也会快得多。你想做的是这样的:
[self.view layoutIfNeeded];
self.myConstraint.constant = 30.0;
[self.view layoutIfNeeded];
Run Code Online (Sandbox Code Playgroud)
建议您在更改常量之前和之后调用layoutIfNeeded。这是因为您可能有一些约束尚未完成,并且会在更改更多约束之前执行。
| 归档时间: |
|
| 查看次数: |
2680 次 |
| 最近记录: |