2016-01-29 50 views
0

我試圖約束添加到圖像視圖和上海華這樣說:不能頂約束添加到視圖

let newConstraint = NSLayoutConstraint(
    item: self.image, 
    attribute: NSLayoutAttribute.Top, 
    relatedBy: NSLayoutRelation.Equal, 
    toItem: self.topLayoutGuide, 
    attribute: NSLayoutAttribute.Bottom, 
    multiplier: 1, 
    constant: 200) 
image.addConstraint(newConstraint) 

當我運行我的應用程序也與此輸出崩潰

無法在視圖上安裝約束。約束是否從視圖的子樹之外引用了某些東西?這是違法的。

任何想法?

回答

1

約束添加到self.view而不是self.image

self.view.addConstraint(newConstraint) 

self.topLayoutGuideself.view子元素,而不是self.image。正如錯誤所述,在約束中引用來自安裝約束的視圖的子樹外部的東西是非法的。

換句話說,self.imageself.topLayoutGuide是視圖層次結構中的兄弟,並且您必須將約束添加到這些兄弟的「父親」(self.view)。