gpt4 book ai didi

ios - UIStackView 可以被约束吗?

转载 作者:行者123 更新时间:2023-11-29 00:35:08 25 4
gpt4 key购买 nike

我有一个 UIScrollView 可以填充所有窗口并且包含一个垂直的 UIStackView 我想在其中添加 UILabels 以填充所有可用宽度.

UIStackView 固定在 UIScrollView 的所有边缘,我希望它填充所有 UIScrollView。但它似乎完全忽略了所有的约束,并且它的尺寸只适合它的 child 。为什么会有这种行为?

为了说明如果我以这种方式添加标签:

    scrollView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[stackView]|", options: NSLayoutFormatOptions.alignAllCenterX, metrics: nil, views: ["stackView": stackView]))
scrollView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[stackView]|", options: NSLayoutFormatOptions.alignAllCenterX, metrics: nil, views: ["stackView": stackView]))

for _ in 1 ... 20 {
let textLabel = UILabel()
textLabel.backgroundColor = UIColor.yellow
textLabel.text = "Hi World xxxx"
stackView.addArrangedSubview(textLabel)
textLabel.widthAnchor.constraint(equalTo: stackView.widthAnchor).isActive = true //Doesn't work as expected

}

我得到的是:(青​​色背景是 UIScrollView 并且您可以看到由于 UIStackView 约束没有占用所有宽度申请)

Result with stackview contraints

只有当我将标签约束更改为使用 scrollView 时,它才能按预期工作:

textLabel.widthAnchor.constraint(equalTo: scrollView.widthAnchor).isActive = true

然后结果如预期: enter image description here

为什么会有这种行为?有人可以解释为什么 UIStackView 上的约束没有像我预期的那样工作吗?

完整源代码avaiable at that gist

最佳答案

一切都是正确的。只是您没有指定内容 View (堆栈 View )的宽度。添加这一行,一切都会完美无缺。

scrollView.widthAnchor.constraint(equalTo: stackView.widthAnchor, multiplier: 1).isActive = true;

注意:将 ScrollView 的前导尾随固定到内容 View 不会为内容 View 提供宽度。需要单独的宽度约束,否则内容 View 的宽度将等于其固有宽度。友情链接:https://stackoverflow.com/a/18341997/1790683

关于ios - UIStackView 可以被约束吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40785244/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com