Es wird angezeigt, dass viewDidLayoutSubviews
sofort aufgerufen wird, nachdem layoutSubviews
in einer Ansicht aufgerufen wurde, bevor layoutSubviews
für die Teilansichten dieser Ansicht aufgerufen wird. Gibt es eine Möglichkeit zu wissen, wann layoutSubviews
in einer Ansicht aufgerufen wurde und alle untergeordneten Elemente, die ebenfalls ihre Layouts benötigen, aktualisiert wurden?
Sie sollten nicht wissen müssen, ob die Unteransichten einer Unteransicht ihr Layout aktualisiert haben: Das klingt nach zu enger Kopplung. Außerdem kann jede Unteransicht die Anordnung ihrer jeweiligen Untersichten unterschiedlich handhaben und muss (möglicherweise) nicht layoutSubviews
für ihre Untersichten aufrufen. Sie sollten immer nur Ihre direkten Untersichten kennen. Sie sollten sie mehr oder weniger als Black Boxes behandeln und es ist mir egal, ob sie eigene Subviews haben oder nicht.
Wie @Johannes Fahrenkrug
gesagt hat, sollten Sie sie als "Black Boxes" behandeln. Aber nach meinem Verständnis ist es, weil der Kakao es einfach nicht versprechen kann.
Wenn Sie wirklich benachrichtigt werden müssen, wenn alle Subviews den Layout-Job erledigt haben, kann hier ein Hardcore-Beispiel Ihr Problem lösen. Ich verspreche auch nicht, dass es in jeder Situation funktionieren würde.
%Vor%Tags und Links objective-c ios uiview uiviewcontroller layoutsubviews