そのフレームが設定されていると、layoutSubviewsがビューで自動的に呼び出されないのはなぜですか?

私は考えている。これは、大規模かつ複雑なプロジェクトの一部です。私のビューのフレームが設定されていると、layoutSubviewsは自動的に呼び出されません。

これを使って遊んで、次の方法を私の見解に入れてみました:

-(void) setFrame: (CGRect) frame {
    NSLog (@"setting frame");
    [super setFrame: frame];
    [self setNeedsLayout];
}

この時点で、フレームが設定されたときに、予想通りにレイアウトがやり直されました。私がsetNeedsLayout行をコメントアウトした場合、レイアウトは行われませんでした。さらに、スーパーが呼び出された行で「ステップイン」をクリックすると、デバッガは何も進んでいません。だから私が言うことができる限り、スーパーのsetFrameメソッドはオーバーライドされていません。

FWIW、私はまた、私はビューのフレームを変更した小さなテストプロジェクトを行った。この場合、layoutSubviewsが呼び出されました。 [setNeedsLayoutは私のテストプロジェクトで呼び出されていませんでした]私の大きなプロジェクトのなかで、動作が変わっています。しかし、私は何かが何であるか分からない。

誰が何が起こっているかも説明できますか?

編集:明確にするために、私のフレームの変更は、ビューの高さを変更しています。幅は変更されません。

3
あなたは謎の人だけではありません。 stackoverflow.com/questions/728372/…
追加された 著者 logancautrell,

答えはありません

0