프로젝트를 진행할때마다 막히는 ScrollView....
그래서 이번에는 한 번 제대로 정리하기로 했습니다 (다양한 스크롤 방식이 있다면 지속적으로 업데이트할 게시글입니다.)
우선 ScrollView의 레이아웃은 위치하고 있는 뷰의 레이아웃에 동일시하게 합니다.
scrollView.snp.makeConstraints { make in
make.edges.equalTo(safeAreaLayoutGuide)
}
그 후 ScrollView내부에서 기준이 될 뷰를 하나 만듭니다.
func addSubview() {
self.view.addSubview(scrollView)
scrollView.addSubview(contentView)
}
수직 스크롤을 만들고 싶기때문에 아래와 같이 레이아웃을 구성해줍니다.
contentView.snp.makeConstraints { make in
make.verticalEdges.equalTo(scrollView.contentLayoutGuide)
make.width.equalTo(scrollView.frameLayoutGuide)
}
이때 contentLayoutGuide, frameLayoutGuide의 차이는 뭘까요??
현재 화면의 프레임이 아닌 콘텐츠 자체의 영역이기 때문에 화면의 프레임을 벗어나 있을 수 있다.
현재 보고있는 화면의 프레임이다. 콘텐츠 자체의 영역과는 다르게 무조건 자신이 보고있는 화면 프레임이기때문에 절대로 프레임을 벗어날 수 없다.
만약 본인이 수직 스크롤을 만들고 싶다면 width는 frameLayoutGuide / height는 contentLayoutGuide에 맞춰 만들면 된다.