2016-04-12 8 views
1

2つのビューがあります。 subLabeltinyImageiOSで横方向の拘束がクラッシュする

私は、tinyImageを10ピクセルの間隔でsubLabelの右にしたいと思います。私はこのコードを実行すると

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

は、それがクラッシュし、私のようなものを参照してください:これは私が持っているものである

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

tinyImageとsubLabelの兄弟ビューはありますか? –

+0

'tinyImage'と' subLabel'の両方がビュー階層に追加されていることを確認し、 'tinyImage'ではなくcommon superviewに制約を加えるべきです。おそらく' self.addConstraint'か 'self.view。 'self'が何であるかに応じてaddConstraint'を返します – Paulw11

+0

@ReyGonzalesはい、infoViewは両方のビューをサブビューとして追加します。 – TIMEX

答えて

1

ビューの場所に制約を追加しているように思え。 tinyImageのスーパービューに制約を追加することができます。

あなたがiOS8 +をサポートしている場合は、書くことができる:

horizontalConstraint.active = true 

代わりの

tinyImage.addConstraint(horizontalConstraint) 

これは自動的にaddConstraint/removeConstraintを呼び出します。

+0

'' 'activate''ではなく' '' .active = true''を意味しますか? – TIMEX

+0

はい、申し訳ありません。私はレスポンスを編集します。 – Dario

関連する問題