2016-04-12 8 views
1

Ich habe zwei Ansichten. subLabel und tinyImageHorizontale Einschränkung verursacht Absturz in iOS

Ich möchte die tinyImage rechts von subLabel, mit einem Abstand von 10 Pixel. Das ist, was ich habe:

 let horizontalConstraint = NSLayoutConstraint(item: subLabel, attribute: NSLayoutAttribute.Trailing, relatedBy: NSLayoutRelation.Equal, toItem: tinyImage, attribute: NSLayoutAttribute.Leading, multiplier: 1, constant: 10) 
     tinyImage.addConstraint(horizontalConstraint) 

Wenn ich diesen Code ausführen, stürzt, und ich sehe so etwas wie:

The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0x7fe89a6ece10 UILabel:0x7fe89a764cf0'2'.trailing == UIImageView:0x7fe89a765bb0.leading + 10> 
    When added to a view, the constraint's items must be descendants of that view (or the view itself). This will crash if the constraint needs to be resolved before the view hierarchy is assembled. Break on -[UIView(UIConstraintBasedLayout) _viewHierarchyUnpreparedForConstraint:] to debug. 
+0

Sind tinyImage- und subLabel-Geschwisteransichten? –

+0

Sie sollten sicherstellen, dass "tinyImage" und "subLabel" zur Ansichtshierarchie hinzugefügt wurden, und Sie sollten die Einschränkung der allgemeinen Superansicht hinzufügen, anstatt "tinyImage", also wahrscheinlich "self.addConstraint" oder "self.view". addConstraint 'abhängig davon, was' self' ist – Paulw11

+0

@ReyGonzales Ja, infoView fügt beide Ansichten als Unteransichten hinzu. – TIMEX

Antwort

1

Es scheint, wie Sie die Einschränkung in der Ansicht Ort hinzufügen. Sie können versuchen, die Einschränkung der Superansicht von tinyImage hinzuzufügen.

wenn Sie iOS8 + unterstützen könnten Sie schreiben:

horizontalConstraint.active = true 

statt

tinyImage.addConstraint(horizontalConstraint) 

Diese addConstraint/removeConstraint automatisch aufruft.

+0

Meinst du '' '.active = true''' anstatt' '' activate'''? – TIMEX

+0

Ja, tut mir leid. Ich werde die Antwort bearbeiten. – Dario

Verwandte Themen