卡在塞满了 UIStackView 的非滚动 UIScrollView
Stuck with non scrolling UIScrollView stuffed with an UIStackView
我的 VC 是一个垂直的 2 部分视图控制器,其中底部是一个 UIScrollView,我在其中添加了一个垂直的 UIStackView,因为它应该垂直滚动。
所有构建步骤都以编程方式完成,如下所示:
// Add upper part
view.addSubview(upperView)
upperView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
upperView.topAnchor .constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
upperView.leadingAnchor .constraint(equalTo: view.leadingAnchor),
upperView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
upperView.heightAnchor .constraint(equalTo: view.heightAnchor, multiplier: 0.3)
])
// Add down part
view.addSubview(scrollView)
scrollView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
scrollView.topAnchor .constraint(equalTo: upperView.bottomAnchor, constant: 40),
scrollView.leadingAnchor .constraint(equalTo: view.leadingAnchor, constant: 20),
scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
scrollView.bottomAnchor .constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
])
// Vertical stackview: basically a vertical collection of strips
scrollView.addSubview(stackView)
stackView.spacing = 5
stackView.distribution = .fill
stackView.alignment = .leading
stackView.axis = .vertical
stackView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
stackView.topAnchor .constraint(equalTo: scrollView.topAnchor),
stackView.leftAnchor .constraint(equalTo: scrollView.leftAnchor),
stackView.widthAnchor .constraint(equalTo: scrollView.widthAnchor),
stackView.bottomAnchor.constraint(equalTo: stackView.bottomAnchor)
])
如果我中断 Xcode 并打开视图层次结构调试器,我会看到它抱怨内容大小:UIScrollView 的可滚动内容大小不明确。
当我将顶部和底部堆栈视图限制在滚动视图时,它是怎么出现的?
您可能需要更改此项
stackView.bottomAnchor.constraint(equalTo: stackView.bottomAnchor)
至
stackView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor)
我的 VC 是一个垂直的 2 部分视图控制器,其中底部是一个 UIScrollView,我在其中添加了一个垂直的 UIStackView,因为它应该垂直滚动。
所有构建步骤都以编程方式完成,如下所示:
// Add upper part
view.addSubview(upperView)
upperView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
upperView.topAnchor .constraint(equalTo: view.safeAreaLayoutGuide.topAnchor),
upperView.leadingAnchor .constraint(equalTo: view.leadingAnchor),
upperView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
upperView.heightAnchor .constraint(equalTo: view.heightAnchor, multiplier: 0.3)
])
// Add down part
view.addSubview(scrollView)
scrollView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
scrollView.topAnchor .constraint(equalTo: upperView.bottomAnchor, constant: 40),
scrollView.leadingAnchor .constraint(equalTo: view.leadingAnchor, constant: 20),
scrollView.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -20),
scrollView.bottomAnchor .constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor),
])
// Vertical stackview: basically a vertical collection of strips
scrollView.addSubview(stackView)
stackView.spacing = 5
stackView.distribution = .fill
stackView.alignment = .leading
stackView.axis = .vertical
stackView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint.activate([
stackView.topAnchor .constraint(equalTo: scrollView.topAnchor),
stackView.leftAnchor .constraint(equalTo: scrollView.leftAnchor),
stackView.widthAnchor .constraint(equalTo: scrollView.widthAnchor),
stackView.bottomAnchor.constraint(equalTo: stackView.bottomAnchor)
])
如果我中断 Xcode 并打开视图层次结构调试器,我会看到它抱怨内容大小:UIScrollView 的可滚动内容大小不明确。
当我将顶部和底部堆栈视图限制在滚动视图时,它是怎么出现的?
您可能需要更改此项
stackView.bottomAnchor.constraint(equalTo: stackView.bottomAnchor)
至
stackView.bottomAnchor.constraint(equalTo: scrollView.bottomAnchor)