Durch einige Experimente habe ich festgestellt, dass einfach hinzufügen, entfernen oder bearbeiten Einschränkungen nicht automatisch setNeedsUpdateConstraints
aufgerufen werden. In der Tat kann ich keinen Weg finden, um setNeedsUpdateConstraints
automatisch vom System aufgerufen zu bekommen. Zusammen mit meiner Beobachtung, dass updateConstraints
wird nicht ohne setNeedsUpdateConstraints
oder invalidateIntrinsicContentSize
aufgerufen wird zuerst aufgerufen, ich denke, die einzige sinnvolle Möglichkeit, alle Einschränkungen ungültig ist durch den Aufruf setNeedsUpdateConstraints
oder invalidateIntrinsicContentSize
mich.So ist die Implikation der Note in der Frage Post ist:
Sie nicht [self setNeedsUpdateConstraints] oder [self invalidateIntrinsicContentSize] in updateConstraints nennen müssen.
angegeben, das ist der Zweck von setNeedsUpdateConstraints. Es ist keine vom System aufgerufene Methode. Es ist eine Methode, die dem Programmierer zur Verfügung gestellt wird, um der Auto-Layout-Laufzeit mitzuteilen, dass Einschränkungen aktualisiert werden müssen. Die Runtime wird dies dann zur richtigen Zeit tun. Es wird bereitgestellt, da Sie updateConstraints nicht direkt aufrufen sollten. –