UIPageControl 업데이트 시키기

이재영·2023년 1월 12일
0

what is Page Control?

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

profile
기록

0개의 댓글