无导航控制器的滚动视图

问题描述 投票:0回答:1

我不知道为什么我不能在不将VC嵌入导航控制器的情况下添加一个工作的滚动视图。

这是我的VC代码,我从一个标签栏控制器打开它,但它没有嵌入到导航控制器中。

lazy var contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height)

    lazy var scrollView : UIScrollView = {
        let scrollView = UIScrollView(frame: view.bounds)
        scrollView.backgroundColor = .white
        scrollView.frame = self.view.bounds
        scrollView.contentSize = contentSize
        scrollView.autoresizingMask = UIView.AutoresizingMask.flexibleHeight
        scrollView.bounces = true
        return scrollView
    }()

    lazy var containerView : UIView = {
        let view = UIView()
        view.backgroundColor = .white
        view.frame.size = contentSize
        return view
    }()

override func viewDidLoad() {
        super.viewDidLoad()

        setupElements()
    }

func setupElements() {

        view.backgroundColor = .white
        view.addSubview(scrollView)
        scrollView.addSubview(containerView)

        let stackView = UIStackView()
        containerView.addSubview(stackView)
        stackView.axis = .vertical
        stackView.distribution = .fillEqually
        stackView.spacing = 12

        stackView.translatesAutoresizingMaskIntoConstraints = false
        stackView.topAnchor.constraint(equalTo: containerView.safeAreaLayoutGuide.topAnchor, constant: 60).isActive = true
        stackView.leadingAnchor.constraint(equalTo: containerView.safeAreaLayoutGuide.leadingAnchor, constant: 20).isActive = true
        stackView.trailingAnchor.constraint(equalTo: containerView.safeAreaLayoutGuide.trailingAnchor, constant: -20).isActive = true
        }

我在stackview里有一堆文本字段和按钮,它们显示得很好,但视图不能滚动(垂直)。我到底做错了什么?

swift scrollview
1个回答
0
投票

你需要计算内容大小Ex。

scrollView.contentSize = CGSize(width: self.view.frame.width, height: self.view.frame.height + 100)

另外,尝试合并你的布局。尝试使用Autolayout


0
投票

您的 scrollView 内容大小应该比你的 scrollView frame 使之滚动

scrollView.contentSize = contentSize
© www.soinside.com 2019 - 2024. All rights reserved.