私のアプリはビューAがビューBのスーパービューであり、ビューBの制約を設定すると、ビューAの幅の3分の1になります。方法updateConstraintsで、回転を行うとき、私はビューAのクラスにおいてスクリーンを回転させた後の幅と高さの値を更新する方法は?
-(void)updateConstraints {
//set the constraints of the width of view B is one-third of view A's width
}
方法でコードを書くビューB、
のクラスでは、私はこの方法を
-(void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
[viewB setNeedsUpdateConstraints]
[viewB updateConstraintsIfNeeded];
[super viewWillTransitionToSize:size withTransitionCoordinator:coordinator];
}
をオーバーライドビューBのクラスが呼び出されますが、ビューAの幅は依然として古い値です。
希望する値は、画面を回転させた後のビューAの幅の新しい値です。
- :それは、私は以下のように2つの質問があり、ビューA.
の幅の古い値に依存するため
それは、ビューBの幅の制約が生じたが間違っています画面を回転した後に更新された幅/高さの値を取得する方法は?
Appleのドキュメントによると、[viewA updateConstraintsIfNeeded]を呼び出すと、それ自身の制約が更新され、すべてのサブビューが更新されます。
しかし、実際には、ビューB'class - クラスAのサブビュー - が呼び出されるメソッドupdateConstraintsが呼び出されません。どうしてか分かりません?