Hir*_*ati 12 xcode objective-c ios ios-autolayout
我在故事板中使用过autolayout约束.但是在某些情况下,我想计算子视图的动态高度.我在viewDidAppear()中编码,它工作正常,因为在布局约束设置所有视图框架之后调用此方法.这里的问题是我可以通过约束看到框架设置半秒钟.然后代码重新构建视图.
我开始了解viewDidLayout(),它在约束设置框架后调用,以便我可以更改.但它不起作用.就像在使用约束之前调用此方法一样.
GoG*_*een 11
viewDidAppear在视图生命周期结束时调用该方法.因此,如果您在此处更改约束,它将始终可见.
如果您想要做的更改是一次性事件,那么您可以在该方法中执行此操作viewWillAppear.但这并不总是有用,因为此时可能并不总是完成视图绘制.所以更好的选择是将代码放入viewWillLayoutSubviews或viewDidLayoutSubviews.
注意: viewWillLayoutSubviews或viewDidLayoutSubviews将在视图的生命周期中多次调用,例如方向更改或移入和移出另一个视图或任何帧更改.
如果你要放在这里的代码更改是一次性事件,那么请确保使用标志.
例如:-
- (void)viewWillLayoutSubviews {
if(firstTime) {
// put your constraint change code here.
}
}
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助!:)
| 归档时间: |
|
| 查看次数: |
11267 次 |
| 最近记录: |