let newOffset = scrollView.contentOffset.y
scrollView.contentOffset = CGPoint(x: scrollView.contentOffset.x, y: newOffset + 100)
contentOffset값을 변경되면서 서브뷰의 위치가 이동되는것처럼 보여지는것을 확인할 수 있다
UIScrollView에 서브뷰들을 넣게되는데 이때 서브뷰들의 위치는 UIScrollView의 contentView의 bounds에 따라 위치가 배치하게된다, 즉 contentOffset이 변경되면 해당 contentView의 bounds값이 변경되어 기존에 배치와 동일하게 되있는데 단지 bounds만 변경되어 마치 안에 서브뷰들이 움직이는것처럼 보여지게 되는것이다
그렇다면 궁금한 점이 생길 것이다, 우리는 UIScrollView를 부모뷰와 동일하게 오토레이아웃을 걸어 따로 contentInset을 변경한적이 없는데도 safeArea에 맞춰서 어느정도 contentInset이 조절되어있는걸 확인할 수 있다
즉 우리가 보는 contentInset은 직접 조절할 수 있는 contentInset과 시스템이 자동으로 조절해주는 systemInset값이 합쳐진 adjustContentInset값에 의해 조절되게 된다