UIStackView布局有什么问题?

时间:2016-09-29 15:12:10

标签: ios swift uistackview

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

但无论我选择哪种分销策略,我总是最终得到这个。我期望看到三个方块均匀分布在堆栈中。 并非所有这些都在彼此之上。

enter image description here

堆栈视图中的自动布局似乎没有正确放置项目。

但为什么?

1 个答案:

答案 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)