在UIScrollView中使用snapkit / autolayout

时间:2018-10-17 13:00:48

标签: swift autolayout swift4 ios-autolayout snapkit

我有一个应用程序,将具有

  • scrollView
    • contentView
      • 图表
      • 按钮
      • 其他东西

我尝试如下图所示对其进行约束,但是我缺少约束,因此无法找到所需的东西。

    self.view.addSubview(self.scrollView)
    self.scrollView.snp.makeConstraints { (make) in
        make.edges.equalTo(self.view)
    }
    let contentView = UIView()

    self.scrollView.addSubview(contentView)
    contentView.snp.makeConstraints { (make) in
        make.top.bottom.equalTo(self.scrollView)
        make.left.right.equalTo(self.view)
    }
    contentView.addSubview(self.chart)
    self.chart.snp.makeConstraints { (make) in
        // http://snapkit.io/docs/
        make.edges.equalTo(contentView).inset(UIEdgeInsets(top: 30, left: 0, bottom: 50, right: 0))
    }

其中scrollView = UIScrollView()

2 个答案:

答案 0 :(得分:0)

您需要为contentView添加宽度/高度或对齐约束。试试这个:

contentView.snp.makeConstraints { (make) in
    make.top.bottom.equalTo(self.scrollView)
    make.left.right.equalTo(self.view)
    make.width.equalTo(self.scrollView)
    make.height.equalTo(self.scrollView)
    // or:
    // make.centerX.equalTo(self.scrollView)
    // make.centerY.equalTo(self.scrollView)
}

答案 1 :(得分:0)

@Ilya Kharabet的简短回答:

contentView.snp.makeConstraints { (make) in
    make.left.right.equalTo(self.view)
    make.width.height.top.bottom.equalTo(self.scrollView)
}

PS:

通常,我们使用make.leading.trailing代替make.left.right来获得RTL支持。