2014-11-21 15 views
1

我以編程方式生成了幾個視圖。有一個超級視圖,其餘的是這個超級視圖的子視圖。iOS8 layoutMargin被忽略

我設置的上海華layoutMargins:

mySuper.layoutMargins = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10); 
mySuper.preservesSuperviewLayoutMargins = true; 

然後我設置的子視圖,像這樣:

mySub = UILabel(frame: CGRect(x: 0, y: 0, width: 0, height: 0)); 
mySuper.addSubview(mySub); 

的目標是有mySub放置10分從頂部和左側。或者通常,覆蓋mySuperxy 0點。

雖然這不行。相反mySub被放置在頂部和左邊緣。我誤解了什麼佈局馬金斯是應該做的?我剛開始學習iOS開發。

回答

0

layoutMargin僅適用於自動佈局。例如

mySuper.layoutMargins = UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10) 

let mySub = UILabel() 
mySuper.addSubview(mySub) 
mySub.setTranslatesAutoresizingMaskIntoConstraints(false) 

mySuper.addConstraint(NSLayoutConstraint(item: mySub, attribute: .Top, relatedBy: .Equal, toItem: mySuper, attribute: .TopMargin, multiplier: 1, constant: 0)) 
mySuper.addConstraint(NSLayoutConstraint(item: mySub, attribute: .Left, relatedBy: .Equal, toItem: mySuper, attribute: .LeftMargin, multiplier: 1, constant: 0)) 
/* OR 
mySuper.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-[subview]", options: nil, metrics: nil, views: ["subview":mySub])) 
mySuper.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-[subview]", options: nil, metrics: nil, views: ["subview":mySub])) 
*/ 
mySub.text = "Label" 
+0

啊,我明白了。我沒有意識到它需要自動佈局。謝謝。 – 2014-11-21 20:41:44