UIViewのサイズを変更したときを検出するには?
-
23-09-2019 - |
質問
私は正しいフレームで初期化されUIViewController
、しかしどこかに私のコードでフレームが台無しに取得し、私が困難見つけるを抱えているがあります。
このような状況では、それは変数ではないので、それはだ、しかし私は、変数ビューでcontroller->表示 - >フレームプロパティにアクセスする方法はありません、通常はデバッガで変数をwatch
と便利ですプロパティ(驚くべきことに)
変数内のUIViewに掘削を示していくつかのことが、私は、フレームに関連することができます何も表示し、私はlayer
であろうと、おそらくと思ったが、そうではありません。
プライベートAPIの変更を監視する方法はありますか?変数はあなたが何watch
に正確に指定することはできませんので、「隠れた」と本質的なので、私は、ないと思います。
また、私は他にどのようなアプローチを使用することができますか?私はすでにsetFrameメソッドにこのサブクラスと破壊を指すように私のUIViewControllerのビューを設定し、UIViewのサブクラス化を試みたが、それは動作していないようでした。
EDIT:サブクラスUIViewのメソッドは、仕事をした、私はちょうど私のテストviewDidLoad
でのサブクラスではなくinit
方法を指すようにビューを設定する必要がありました。これはこの種の問題にアプローチする最良の方法である場合、私はわからないとしてオープンこの質問を残して...
解決 2
私は、これは、キー値のオブザーバーを使用して行うことができます発見しました。
他のヒント
サブクラスあなたのあなたがsetFrameメソッドを追跡し、書き換えしたいビューます:
@implementation MyTableView
- (void)setFrame:(CGRect)frame;
{
NSLog(@"%@", frame);
[super setFrame:frame];
}
@end
そして、それにブレークポイントを追加し、それが呼び出されたときにチェックするために、デバッガを使用しています。フレームが変更されますと、どこの変化から来ないとき最終的に、あなたが表示されます。
あなたはIVAR、VIEW2を作成し、ちょうどあなたのloadView
方法であなたのビューに割り当てられた可能性があります。つまり、通常の変数のようにそれを見て、あなたを有効にする必要があります。