iOS: Ändern von Integritätsbedingungen, die über den Interface Builder festgelegt wurden

8

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

auslöst     
Aleksandr Shcherbakov 16.01.2015, 01:59
quelle

2 Antworten

22

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

    
Charlie Wu 16.01.2015, 03:55
quelle
2

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.

    
skwashua 16.01.2015 03:59
quelle