私は考えている。これは、大規模かつ複雑なプロジェクトの一部です。私のビューのフレームが設定されていると、layoutSubviewsは自動的に呼び出されません。
これを使って遊んで、次の方法を私の見解に入れてみました:
-(void) setFrame: (CGRect) frame {
NSLog (@"setting frame");
[super setFrame: frame];
[self setNeedsLayout];
}
この時点で、フレームが設定されたときに、予想通りにレイアウトがやり直されました。私がsetNeedsLayout行をコメントアウトした場合、レイアウトは行われませんでした。さらに、スーパーが呼び出された行で「ステップイン」をクリックすると、デバッガは何も進んでいません。だから私が言うことができる限り、スーパーのsetFrameメソッドはオーバーライドされていません。
FWIW、私はまた、私はビューのフレームを変更した小さなテストプロジェクトを行った。この場合、layoutSubviewsが呼び出されました。 [setNeedsLayoutは私のテストプロジェクトで呼び出されていませんでした]私の大きなプロジェクトのなかで、動作が変わっています。しかし、私は何かが何であるか分からない。
誰が何が起こっているかも説明できますか?
編集:明確にするために、私のフレームの変更は、ビューの高さを変更しています。幅は変更されません。