有没有一种简单的方式来获取UIStackView的总内容大小?
举个例子:
我通过编程的方式创建了一个UIView数组...
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
注意,我有意不定义高度和宽度约束,也不定义底部和右侧约束。我不希望subViews或间距根据stackView的distribution属性进行调整大小。在这个简单的例子中,总内容高度为40(最高subView的高度)。
总宽度=所有subview的宽度+所有间距的宽度= (100*5)+(4 * 4)=516
当我以这种方式初始化subView时,UIStackView的frame和bounds都是0,0,0,0。