我正在使用viewWillLayoutSubviews / viewDidLayoutSubviews来侦听视图范围更改,因此我可以手动执行界面布局。例如,iPhone X和iPhone 8布局存在一些差异,因此我听了viewWillLayoutSubviews并执行手动界面布局,包括重绘了一些子视图。
问题是viewWillLayoutSubviews被调用了很多次,以至于我不必要地更新了接口。例如,我有一些UILabel会不断更新,并调用viewWillLayoutSubviews / viewDidLayoutSubviews。还有什么其他方法可以让我仅收听“主要事件”,例如主视图范围更改或旋转,然后才可以更新/重绘子视图?