【发布时间】:2017-08-10 12:26:39
【问题描述】:
有没有一种简单的方法来获取 UIStackView 的总内容大小?
举个例子:
我以编程方式创建 UIViews 数组...
var numberOfSubViews = 5
let subViews: [UIView] = {
var array: [UIView] = []
for _ in 0..<numberOfSubViews {
let height: CGFloat = 40
let width: CGFloat = 100
let subView = UIView(frame: CGRect(x: 0, y: 0, width: width, height: height))
subView.widthAnchor.constraint(equalToConstant: width).isActive = true
subView.heightAnchor.constraint(equalToConstant: height).isActive = true
array.append(subView)
}
return array
}()
然后我从该数组创建一个简单的 UIStackView...
var spacing: CGFloat = 4
let stackView = UIStackView(arrangedSubviews: subViews)
stackView.axis = .horizontal
stackView.spacing = spacing
stackView.translatesAutoresizingMaskIntoConstraints = false;
最后,我将 stackView 插入现有视图并锚定顶部和前导。
view.addSubview(stackView)
stackView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
请注意,我故意不定义高度和宽度约束或底部和尾随约束。我不希望根据 stackViews 分布属性调整子视图或间距。
在这个简单的示例中,总内容高度为 40(最高 subView 的高度)。
总宽度 = 所有子视图的宽度 + 所有间距的宽度 = (100 * 5) + (4 * 4) = 516
当我以这种方式初始化subView时,UIStackView的frame和bounds为0,0,0,0。
【问题讨论】:
标签: ios swift uistackview