如何以编程方式在滚动视图中嵌入堆栈视图

Posted

技术标签:

【中文标题】如何以编程方式在滚动视图中嵌入堆栈视图【英文标题】:How to embed stack view in scroll view programmatically 【发布时间】:2016-01-22 11:59:19 【问题描述】:

我尝试过嵌入它,但我的堆栈视图是动态的,而且我的应用程序也会不时改变方向。我在视图的末尾有段控制。 我也试过用谷歌搜索,但没有运气。提前致谢。

到目前为止我已经完成了:

在视图中确实加载了:

mainStackView.axis = UILayoutConstraintAxis.Vertical
mainStackView.spacing = 3
scrollView.frame =  self.view.bounds
scrollView.addSubview(mainStackView)
view.addSubview(scrollView)

在视图中做了布局:

override func viewDidLayoutSubviews()
    
        super.viewDidLayoutSubviews()
        let top = topLayoutGuide.length
        let bottom = bottomLayoutGuide.length
                        self.mainStackView.frame = CGRect(x: 0, y: top, width: view.frame.width, height: view.frame.height - top - bottom).insetBy(dx: 10, dy: 10)
        dispatch_async(dispatch_get_main_queue())
            

                self.scrollView.frame =  self.view.bounds
                self.scrollView.contentSize = CGSize(width: self.view.bounds.width, height: self.segmentedControl.frame.origin.y + self.segmentedControl.frame.height + 50)
        
        print(scrollView.contentSize)
    

【问题讨论】:

【参考方案1】:

需要设置段控制的高度约束。

例如:

 segmentedControl.heightAnchor.constraintEqualToConstant(50).active = true

此外,您可以添加空底视图以避免堆栈视图的必须填充机制。这将向您显示所需的视图输出。

        var bottomView = UIView(frame: CGRectZero)
        stackView.addArrangedSubview(bottomView)

【讨论】:

以上是关于如何以编程方式在滚动视图中嵌入堆栈视图的主要内容,如果未能解决你的问题,请参考以下文章

如何在设置了“等宽”的滚动视图中嵌入的堆栈视图中将标签文本设置为远离视图边缘?

嵌入堆栈视图时,滚动视图内容未填充

如何以编程方式设置滚动视图高度

如何在以编程方式制作滚动视图时解决此问题?

无法在滚动视图中正确调整堆栈视图

以编程方式滚动底部的滚动视图 - iphone