Przez niektóre eksperymenty odkryłem, że po prostu dodawanie, usuwanie lub edytowanie wiązań nie będzie automatycznie wywoływane przez setNeedsUpdateConstraints
. W rzeczywistości nie mogę znaleźć sposobu, aby automatycznie uzyskać wywołanie setNeedsUpdateConstraints
przez system. Wraz z moją obserwacją, że updateConstraints
nie zostanie wywołany bez pierwszego wywołania setNeedsUpdateConstraints
lub invalidateIntrinsicContentSize
, myślę, że jedynym znaczącym sposobem na unieważnić wszelkie ograniczenia jest przez wywołanie setNeedsUpdateConstraints
lub invalidateIntrinsicContentSize
mnie.Zatem implikacja noty w poście pytanie brzmi:
Nie musi wywołać [setNeedsUpdateConstraints własny] lub [self invalidateIntrinsicContentSize] w updateConstraints.
, który jest celem setNeedsUpdateConstraints. To nie jest metoda wywoływana przez system. Jest to metoda dostarczona programistom, aby powiadomić środowisko wykonawcze Auto Layout, że ograniczenia wymagają aktualizacji. Środowisko wykonawcze zrobi to we właściwym czasie. Jest dostarczany, ponieważ nie powinieneś bezpośrednio wywoływać funkcji updateConstraints. –