2016-04-12 25 views
1

kilitlenmesine neden oluyor İki kez göründüm. subLabel ve tinyImageYatay Kısıtlama, iOS'ta

tinyImage'ın, 10 piksellik bir aralıkla subLabel'ın sağında olmasını istiyorum. Bu kodu çalıştırdığınızda

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

, çöker ve ben gibi bir şey bakın:: Bu benim ne var

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 ve subLabel sibling görünümleri var mı? –

+0

Hem "tinyImage" hem de "subLabel" öğelerinin görünüm hiyerarşisine eklendiğinden emin olmalısınız ve kısıtlamayı "tinyImage" yerine muhtemelen "self.addConstraint" veya "self.view" yerine genel görünümüne eklemelisiniz. addConstraint' 'self' 'ne bağlı olarak – Paulw11

+0

@ReyGonzales Evet, infoView, alt görünümler olarak iki görünüm ekler. – TIMEX

cevap

1

Eğer görünümü yerde kısıtlama ekleme gibi görünüyor. Kısıtlamayı tinyImage'ın süper görüntüsüne ekleyebilirsiniz. Eğer, iOS8 + destekleyen eğer

yazabilirsiniz: Bu, otomatik olarak addConstraint/removeConstraint arayacak

horizontalConstraint.active = true 

yerine

tinyImage.addConstraint(horizontalConstraint) 

arasında.

+0

'' 'activate''' yerine' '' .active = true''' kastediyor musunuz? – TIMEX

+0

Evet, üzgünüm. Yanıtı ben düzenleyeceğim. – Dario