UIPageControl 업데이트 시키기

이재영·2023년 1월 12일

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
how to define. how to solve.

0개의 댓글