적당한 고통은 희열이다

- 댄 브라운 '다빈치 코드' 중에서

Swift iOS 앱 개발/iOS

UIScrollViewDelegate

hongssup_ 2022. 9. 15. 11:14
반응형

UIScrollViewDelegate

 

scrollViewWillEndDragging / scrollViewDidEndDragging / scrollViewDidEndDecelerating 차이? 사용 시기?

 

호출 순서

":: scrollViewWillBeginDragging"

":: scrollViewDidScroll"

...

":: scrollViewDidScroll"

":: scrollViewDidEndDragging"

":: scrollViewWillBeginDecelerating"

":: scrollViewDidScroll"

...

":: scrollViewDidScroll"

":: scrollViewDidEndDecelerating"

 

scrollViewDidScroll

: Tells the delegate when the user scrolls the content view within the scroll view.

스크롤 중일 때 계속 호출됨.

 

scrollViewWillBeginDragging

: Tells the delegate when the scroll view is about to start scrolling the content. 

스크롤 시작될 때, 가장 처음 호출되는 메서드

 

scrollViewWillEndDragging

 

scrollViewDidEndDragging

: Tells the delegate when dragging ended in the scroll view.

 

scrollViewWillBeginDecelerating

: Tells the delegate that the scroll view is starting to decelerate the scrolling

 

scrollViewDidEndDecelerating

: Tells the delegate that the scroll view ended decelerating the scrolling movement. 

스크롤이 완전히 끝났을 때 호출되는 메서드로, 스크롤 완료 시 tableView / collectionView의 indexPath를 알고 싶을 때 사용할 수 있다. 

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    let visibleIndexPathList = self.collectionView.visibleCells.compactMap { (visibleCell) -> Int? in
        return self.collectionView.indexPath(for: visibleCell)?.item
    }
    let sortList = visibleIndexPathList.sorted()
    guard let firstSection = sortList.first else { return }
}
728x90
반응형