ใช้ snapkit / autolayout กับ UIScrollView

ฉันมีแอพที่จะมี

  • scrollView
    • contentView
      • chart
      • ปุ่ม
      • อย่างอื่น

ฉันพยายามจำกัดตามที่แสดงด้านล่าง แต่ฉันไม่มีข้อจำกัด และไม่พบสิ่งที่ต้องการ

    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()


person Peter S    schedule 17.10.2018    source แหล่งที่มา


คำตอบ (2)


คุณต้องเพิ่มข้อจำกัดความกว้าง/ความสูงหรือการจัดตำแหน่งสำหรับ 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)
}
person Ilya Kharabet    schedule 17.10.2018
comment
ขอบคุณ. ฉันจะตั้งค่าความสูงของเนื้อหา scrollView ตาม contentView ได้อย่างไร - person Peter S; 17.10.2018
comment
ความสูงของเนื้อหาจะถูกคำนวณโดยอัตโนมัติ - person Ilya Kharabet; 17.10.2018

คำตอบสั้น ๆ ของ @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 Support

person dengST30    schedule 17.12.2019