Ios 自动布局约束生命周期

Ios 自动布局约束生命周期,ios,objective-c,uiviewcontroller,autolayout,nslayoutconstraint,Ios,Objective C,Uiviewcontroller,Autolayout,Nslayoutconstraint,我试图找到在代码中而不是IB中应用自动布局约束的最佳方法 我需要我的ViewController的topLayoutGuide和bottomLayoutGuide属性,开发人员文档要求在viewDidLayoutSubviews选择器中查询它。在其他ViewController生命周期方法中,尚未设置顶部和底部布局辅助线 我的问题是,由于这可以多次调用,因此在viewDidLayoutSubviews中多次这样做感觉很糟糕: 删除视图中的先前约束 再次设置约束 调用[self.view layo

我试图找到在代码中而不是IB中应用自动布局约束的最佳方法

我需要我的ViewController的topLayoutGuide和bottomLayoutGuide属性,开发人员文档要求在viewDidLayoutSubviews选择器中查询它。在其他ViewController生命周期方法中,尚未设置顶部和底部布局辅助线

我的问题是,由于这可以多次调用,因此在viewDidLayoutSubviews中多次这样做感觉很糟糕:

  • 删除视图中的先前约束
  • 再次设置约束
  • 调用[self.view layoutSubviews]再次应用它们

  • 有更好的地方吗?例如,我知道选择器只会被调用一次,并且我应用了我的约束。如果调用了任何键盘操作,我可以适当地更新它们,而不是销毁其他操作并从头开始重建。

    我通过向VC中添加布尔属性解决了这个问题,以“否”开头,如果值为“否”,则仅更新约束,然后在调用viewDidLayoutSubviews的末尾,将属性设置为“是”。然后,如果需要在特定操作(如打开键盘)上再次更新约束,只需将布尔值设置回“否”。