waarom zou layoutSubviews NIET automatisch op een view worden aangeroepen wanneer het frame is ingesteld?

Ik heb een uitzicht. Het maakt deel uit van een groot en complex project. Wanneer het frame van mijn weergave is ingesteld, wordt layoutSubviews niet automatisch opgeroepen.

Hier mee aan het spelen, probeerde ik de volgende methode in mijn zicht te zetten:

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

Op dit punt werd de lay-out vernieuwd toen het frame was ingesteld, zoals verwacht. En als ik een commentaar gaf op de setNeedsLayout-regel, was de lay-out niet voltooid. Verder, wanneer ik op "step into" klik op de regel waar super wordt aangeroepen, komt de debugger nergens in. Dus voor zover ik kan zien, wordt de setFrame-methode van super niet onderdrukt.

FWIW, ik deed ook een klein testproject waarin ik het kader van een weergave veranderde. In dit geval is layoutSubviews opgeroepen toen ik dat deed. [setNeedsLayout werd niet genoemd in mijn testproject.] Dus iets in mijn grote project verandert het gedrag. Maar ik weet niet wat dat iets is.

Kan iemand uitleggen wat er aan de hand is?

EDIT: om op te helderen verandert mijn frameverandering de hoogte van het aanzicht. De breedte is niet veranderd.

3
Jij bent niet de enige die je hebt gemystificeerd. stackoverflow.com/questions/728372/…
toegevoegd de auteur logancautrell, de bron

Geen antwoorden

0