UIScrollViewDelegate 메소드 파헤치기
Docs 순으로 …
Responding to Scrolling and Dragging 스크롤, 드래그에 반응
- scrollViewDidScroll()
- 스크롤 할 때 마다 계속 호출.
- offset 값이 바뀔 때 마다 호출되므로,,, 한번 쓰윽 스크롤 해도 우르르르르르 호출됨
- scrollViewWillBeginDragging()
- 스크롤 뷰에서 드래그 하기 시작할 때 한 번만 호출
- 시간이 쪼금 걸리거나, 이동거리를 약간 요할 수 있음
- scrollViewWillEndDragging()
- 손을 뗐을 때 한 번만 호출
- 속도(velocity) = points/millisecond
- targetContentOffset을 변경하여 스크롤 뷰가 정지되는 위치를 조정할 수 있음. 헐 나 이거 써야될 걸
- scollViewDidEndDragging()
- 손을 뗐을 때 한 번만 호출 (위 scrollViewWillEndDragging과 동일)
- 스크롤 모션의 감속 여부를 알 수 있음
- decelerate : 손 뗀 후로 계속 이동할 경우 true
- scrollViewShouldScrollToTop()
- 맨 위 누르면 뷰의 최상단으로 올라가는 거 허용할건지 안 할건지 설정
- 이 함수가 정의되어있지 않으면, default 값은 YES임
- scrollViewDidScrollToTop()
- 맨 위 누르면 뷰의 최상단으로 올라가는 이벤트가 발생할 때 호출되는 함수
- 이미 최상단에 위치하고 있으면 즉시 호출될 수 있음
- scrollViewWillBeginDecelerating()
- 손을 뗀 이후로!! 감속이 시작됐을 때 호출되는 함수
- scrollViewDidEndDecelerating()
- 감속이 끝났을 때 호출되는 함수 (스크롤 뷰의 움직임이 멈췄을 때 halt 상태일 때! 정지!)
Managing Zooming
- viewForZooming()
- ImageView를 확대하고 싶을 때 자주 쓰는 것 같다. 여기 참고
- scale될 뷰를 반환한다. 만약 deletate가 nil을 반환하면 아무 일도 일어나지 않음
- scrollViewWillBeginZooming()
- scrollView가 그 내용을 zoom 하기 전에 호출됨
- scrollViewDidEndZooming()
- content의 zoom이 끝났을 때 호출됨
- scale between minimum and maximum. called after any ‘bounce’ animations
- scrollViewDidZoom()
- Tells the delegate that the scroll view’s zoom factor changed.
Responding to Scrolling Animations
- scrollViewDidEndScrollingAnimation()
- setContentOffset 또는 scrollRectVisible 이 사용될 때 호출되는 함수
- called when setContentOffset/scrollRectVisible:animated: finishes. not called if not animating
Responding to Inset Changes
-
scrollViewDidChangeAdjustedContentInset()
-
adjustedContentInset = contentInset + system inset
-
contentInset
을 변경하거나 content insets가 시스템에 의해 조정되면 UIScrollView 및 UIScrollView Delegate의 메소드가 호출 됨.