2016-09-29 48 views
2

UIKit讓我覺得非常沮喪。我在Xcode遊樂場這小小的一段代碼:UIStackView佈局有什麼問題?

let views = [UIView(), UIView(), UIView()] 

for view in views { 
    view.backgroundColor = UIColor.blueColor() 
    view.bounds.size = CGSize(width: 40, height: 40) 
} 

let stack = UIStackView(frame: CGRect(x: 0, y: 0, width: 200, height: 40)) 
stack.backgroundColor = UIColor.redColor() 

stack.addArrangedSubview(views[0]) 
stack.addArrangedSubview(views[1]) 
stack.addArrangedSubview(views[2]) 

stack.axis = .Horizontal 
stack.distribution = .Fill 
stack.alignment = .Center 
stack.spacing = 5 

但無論哪一種銷售策略,我選擇,我總是最後this.My期望是看到在堆棧中均勻分佈三個廣場。 並非所有這些都在彼此之上。

enter image description here

這似乎在堆棧視圖自動佈局沒有規定的項目進行正確。

但是爲什麼?

+1

http://stackoverflow.com/questions/30728062/add-views-in-uistackview-programmatically –

+0

它不重複的傢伙,OP正在Xcode遊樂場。 –

+0

你能解決這個問題嗎? –

回答

0

這是我如何得到它的工作:

import UIKit 

func getRandomColor() -> UIColor { 
    let randomRed:CGFloat = CGFloat(drand48()) 
    let randomGreen:CGFloat = CGFloat(drand48()) 
    let randomBlue:CGFloat = CGFloat(drand48()) 
    return UIColor(red: randomRed, green: randomGreen, blue: randomBlue, alpha: 1.0) 
} 

let standardFrame = CGRect(x: 0, y: 0, width: 200, height: 40) 
let rootView = UIView(frame: standardFrame) 
rootView.backgroundColor = UIColor.blueColor() 

let views = [UIView(), UIView(), UIView()] 

for view in views { 
    view.backgroundColor = getRandomColor() 
    view.bounds.size = CGSize(width: 40, height: 40) 
} 

let stack = UIStackView(frame: CGRect(x: 0, y: 0, width: 200, height: 40)) 
stack.backgroundColor = UIColor.redColor() 

stack.addArrangedSubview(views[0]) 
stack.addArrangedSubview(views[1]) 
stack.addArrangedSubview(views[2]) 

stack.axis = .Horizontal 
stack.alignment = .Fill 
stack.distribution = .FillEqually 
stack.spacing = 5 

rootView.addSubview(stack)