Page Control은 앱의 문서 또는 기타
데이터 모델 엔터티의 페이지에 각각 해당하는 일련의 가로 점을 표시한다.
아래 사진을 보면 무엇인지 바로 알 수 있다.
collectionView에 있는 scrollView를 하나씩 스크롤 할때
Page Control은 여전히 첫번째 점을 가리키는 것을 발견하였다.
이에 대해서 Scroll View관련 메소드를 정의하고자 하였고,
UIScrollViewDelegate를 통해
Page Control을 업데이트 할 수 있게 해주었다.
처음에 scroll이 얼만큼 되고있는지 파악하기 위해 contentOffset을 찍어보았다.
한번 스크롤할때의 offset값과 collectionView의 가로길이가
같은 점을 이용해서 스크롤할때마다 PageControl의 값도 업데이트되게
구현해보았다. 해당 메소드 정의는 아래와 같이 구현했다.
extension OnboardingViewController: UIScrollViewDelegate{
func scrollViewDidScroll(_ scrollView: UIScrollView) {
print(Int(scrollView.contentOffset.x / self.collectionView.bounds.width))
}
}
페이지 값이 잘 업데이트되는 것을 확인해 변수 index로 저장하였고
그 index값이 현재 페이지의 값과 일치하게 해주었다.
// 다음 페이지로 스크롤할때마다 page control도 업데이트되는것을 구현
extension OnboardingViewController: UIScrollViewDelegate{
// func scrollViewDidScroll(_ scrollView: UIScrollView) {
// print(Int(scrollView.contentOffset.x / self.collectionView.bounds.width))
// }
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
print("멈추었다.")
let index = Int(scrollView.contentOffset.x / self.collectionView.bounds.width)
PageControl.currentPage = index
}
}
참고자료 및 자세한내용 https://developer.apple.com/documentation/uikit/uipagecontrol
https://calmone.tistory.com/entry/iOS-UIKit-in-Swift-4-UIPageControl-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0