Junior — Middle
Wat gebeurt er bij het aanroepen van de methode setNeedsLayout in vergelijking met layoutIfNeeded qua synchroniteit van uitvoering?
sobes.tech AI
Antwoord van AI
De methode setNeedsLayout markeert de view als zijnde behoefte aan een lay-out update, maar de daadwerkelijke update wordt asynchroon uitgevoerd — in de volgende interface update cyclus. Dat betekent dat na het aanroepen van setNeedsLayout, het systeem de aanroep van layoutSubviews uitstelt tot de volgende render cyclus.
In tegenstelling hiermee voert layoutIfNeeded de lay-out synchronisch uit, als de view als nodig wordt gemarkeerd. Dat wil zeggen, de aanroep van layoutIfNeeded roept onmiddellijk layoutSubviews aan, indien nodig, en past de positionering van elementen onmiddellijk aan.
Voorbeeld:
view.setNeedsLayout() // Uitgestelde lay-out
// Hier is `layoutSubviews` nog niet aangeroepen
view.layoutIfNeeded() // Directe lay-out, indien nodig
// Hier is `layoutSubviews` al aangeroepen