【问题标题】:Create ScrollView programmatically using Snapkit使用 Snapkit 以编程方式创建 ScrollView
【发布时间】:2021-08-07 05:58:56
【问题描述】:

我正在使用 snapkit 以编程方式制作滚动视图,它可以滚动,但问题是最后一个元素(systemTeal color tempView)无法完全看到。

我在 Scrollview 中创建 contentView,它包含所有元素。

class ScrollViewController: UIViewController {

    let scrollView = UIScrollView()
    let contentView = UIView()

    private var datePickerView = UIView().then {
        $0.backgroundColor = .pastelGreen
        $0.layer.cornerRadius = 8
    }    
   
    var colorGraphView = UIView().then {
        $0.backgroundColor = .clear
    }
    
    var tableView = UITableView().then {
        $0.backgroundColor = .shadowColor
    }

    var tempView = UIView()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        commonInit()
        scrollView.delegate = self
    }
    
    func commonInit() {
        self.view.addSubview(scrollView)
        scrollView.snp.makeConstraints { make in
            make.edges.equalTo(self.view.safeAreaLayoutGuide)
        }
        
        scrollView.addSubview(contentView)
        contentView.snp.makeConstraints { make in
            make.edges.equalTo(self.scrollView)
            make.width.equalTo(self.scrollView)
        }

        contentView.addSubview(datePickerView)
        contentView.addSubview(colorGraphView)
        contentView.addSubview(tableView)
        contentView.addSubview(tempView)
        
        datePickerView.snp.makeConstraints { make in
            make.leading.equalTo(contentView.snp.leading).offset(16)
            make.trailing.equalTo(contentView.snp.trailing).offset(-16)
            make.top.equalTo(contentView).offset(26)
            make.height.equalTo(42)
        }

        colorGraphView.snp.makeConstraints { make in
            make.leading.equalTo(contentView).offset(16)
            make.trailing.equalTo(contentView).offset(-16)
            make.top.equalTo(datePickerView.snp.bottom).offset(19)
            make.height.equalTo(390)
        }
        tableView.snp.makeConstraints { make in
            make.leading.equalTo(contentView).offset(16)
            make.trailing.equalTo(contentView).offset(-16)
            make.top.equalTo(colorGraphView.snp.bottom).offset(10)
            make.height.equalTo(150)
        }
        tempView.snp.makeConstraints { make in
            make.top.equalTo(tableView.snp.bottom).offset(10)
            make.leading.equalTo(contentView.snp.leading).offset(16)
            make.trailing.equalTo(contentView.snp.trailing).offset(-16)
            make.height.equalTo(100)
            make.bottom.equalTo(contentView.snp.bottom).offset(-20)
        }

        scrollView.backgroundColor = .brown
        contentView.backgroundColor = .blue
        colorGraphView.backgroundColor = .yellow
        tableView.backgroundColor = .gray
        tempView.backgroundColor = .systemTeal    
}

如何在不设置 contentSize 的情况下创建自动布局滚动视图?

Srcollview 现在看起来像这样

【问题讨论】:

    标签: ios swift autolayout scrollview snapkit


    【解决方案1】:

    我认为问题可能出在make.edges.equalTo 的使用上。它会将超级视图的边缘静态设置为您的滚动视图和内容视图,而不是将顶部、前导、尾随、底部锚点约束到超级视图。我建议你改用'make.top.leading.trailing.bottom.equalToSuperview()'。

    【讨论】:

      猜你喜欢
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-11
      • 2015-10-02
      • 2022-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多