UIKit让我感到非常沮丧。我在Xcode游乐场中有一小段代码:
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
但无论我选择哪种分销策略,我总是最终得到这个。我期望看到三个方块均匀分布在堆栈中。 并非所有这些都在彼此之上。
堆栈视图中的自动布局似乎没有正确放置项目。
但为什么?
答案 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)