Stackview 不附加第二个视图

Posted

技术标签:

【中文标题】Stackview 不附加第二个视图【英文标题】:Stackview doesn't append second view 【发布时间】:2017-05-22 06:19:57 【问题描述】:

我以编程方式创建了一个堆栈视图,并添加了一个我以编程方式创建的视图。但是当我尝试添加第二个视图时它不起作用。 这是我的代码:

@IBOutlet weak var codingScrollView: UIView!
let codeStackView = UIStackView()
var codeViews = [CodeView]()
let codeView1 = CodeView(name: "Lennart", date: "13/05/2002", code: "Just some code")
let codeView2 = CodeView(name: "Nina", date: "01/07/1999", code: "Also some code")

codingScrollView 是我添加到 UIScrollView 的内容视图。 codeStackView 是我之前描述过的那个 codeViews 数组用于将视图添加到 stackview。

这里是 viewDidLoad 方法:

    codeViews.append(codeView1)
    codeViews.append(codeView2)

    codingScrollView.addSubview(codeStackView)
    codingScrollView.backgroundColor = UIColor(red: 226/255, green: 226/255, blue: 226/255, alpha: 1)

    codeStackView.centerXAnchor.constraint(equalTo: codingScrollView.centerXAnchor)
    codeStackView.centerYAnchor.constraint(equalTo: codingScrollView.centerYAnchor)

    codeStackView.translatesAutoresizingMaskIntoConstraints = false

    codeStackView.spacing = 10

    codeStackView.axis = .horizontal
    codeStackView.alignment = .center

    for i in 0...codeViews.count - 1 
        codeStackView.addSubview(codeViews[i])
        codeStackView.addArrangedSubview(codeViews[i])
    

但如果我运行该应用程序,它不会显示第二个视图,它只会显示其中一个。

非常感谢,我真的很感谢任何帮助

【问题讨论】:

【参考方案1】:

尝试先将 codeView1,2 添加到堆栈视图,然后将 codeStackView 添加到 codingScrollView

另外,请务必在进行任何约束之前设置codeStackView.translatesAutoresizingMaskIntoConstraints = false

codeViews.append(codeView1)
codeViews.append(codeView2)

for i in 0...codeViews.count - 1 
    codeStackView.addSubview(codeViews[i])
    codeStackView.addArrangedSubview(codeViews[i])


codeStackView.translatesAutoresizingMaskIntoConstraints = false

codeStackView.centerXAnchor.constraint(equalTo: codingScrollView.centerXAnchor)
codeStackView.centerYAnchor.constraint(equalTo: codingScrollView.centerYAnchor)

codeStackView.spacing = 10

codeStackView.axis = .horizontal
codeStackView.alignment = .center

codingScrollView.addSubview(codeStackView)
codingScrollView.backgroundColor = UIColor(red: 226/255, green: 226/255, blue: 226/255, alpha: 1)

【讨论】:

但奇怪的是堆栈视图根本没有居中

以上是关于Stackview 不附加第二个视图的主要内容,如果未能解决你的问题,请参考以下文章

iOS:滚动视图和自动布局,第二个视图不扩展

左对齐的水平堆栈视图和顶部对齐的垂直堆栈视图

stackView 中的 StackView 不能通过 swift 使用它的间距

在不停止 stackView 自动调整大小的情况下对齐图像视图

动态大小嵌套的 UIStackView

UIPageViewController 在平移/滑动时设置附加操作