Guten Tag, Freunde!
Ich habe versäumt, Ansichten zu animieren, die in IB vom Code festgelegt wurden. App stürzt mit folgendem Grund ab:
Die Ansichtshierarchie ist nicht für die Einschränkung vorbereitet ...
Ich habe einige ähnliche Fragen hier gesehen und der Grund war immer, dass die Ansicht, die programmgesteuert erstellt wurde, noch nicht zu superview hinzugefügt wurde. Aber ich habe alle Ansichten in IB erstellt!
Die Konsole sagt auch:
Die Ansicht wurde nicht in der Containerhierarchie gefunden: (hier ist die Superansicht)
Es macht keinen Sinn für mich, weil es in der Tat eine Subview der entsprechenden Superview ist, und xcode weiß es - es druckt die Ansichtshierarchie sofort und es passt.
Was könnte der Grund sein? Danke!
Bearbeiten: Code, den ich verwende:
%Vor%Ich lösche auch alle Constraints, die ich in IB vor der Installation neu gesetzt habe:
%Vor%Und dann:
%Vor%} }
UPDATE 2: Methode, die ich Aufrufänderung verwende: Wenn Benutzer die Ansicht berührt, wird diese aufgerufen:
%Vor% Später in updateViewConstraints:
gibt es einen Code, der meine Methode setEditingConstraintsForView:(UIView *)view
Wenn Sie IB zum Erstellen von Constrains verwenden, können Sie Constrains als Outlet hinzufügen.
Sie aktualisieren dann die Einschränkung und rufen [self updateViewConstraints] auf; im Animationsblock
Wenn ich es wäre, würde ich die Einschränkungen an IBOutlets binden und nur die bestehenden Einschränkungen ändern. Es wäre wahrscheinlich einfacher, als sie programmatisch hinzuzufügen und zu entfernen.
Sie müssen möglicherweise auch setNeedsLayout
aufrufen, nachdem Sie die Einschränkungen geändert haben.
Tags und Links objective-c ios autolayout nslayoutconstraint