본문 바로가기

iOS

[iOS] UIScrollViewDelegate

UIScrollViewDelegate를 알아보자

최근 배너창 여러개가 도는거랑 무한 스크롤에 관심이 생겼습니다. 

UIScrollViewDelegate에 어떤것들이 있는지 알면 좋을 것 같아서 살펴보고 갈거에요 ㅎ 

 

 

스크롤링, 줌잉, 스크롤의 감속, 스크롤 애니메이션같은 작업에 반응하는 메소드들!!

 

 

Responding to Scrolling and Dragging 함수들

scrollViewDidScroll

스크롤 할 때 실행되는 함수, 컨텐트의 오프셋을 가져올 수 있음.

 

scrollViewWillBeginDragging

스크롤을 드래깅 시작 할 때 실행되는 함수, 너무 조금 움직이면 수신을 못할 수 있음

 

scrollViewWillEndDragging

스크롤 드래깅이 곧 끝나요~~! 실행되는 함수,  targetContentOffset을 설정하여 애니메이션 완료시 위치를 조정할 수 있음.

파라미터 scrollView = 터치가 끝났을 때 스크롤뷰 객체 ,withVelocity = 터치가 해제된 순간 스크롤 뷰의 속도, targetContentOffset = 스크롤이 정지할때 예상되는 오프셋

 

scrollViewDidEndDragging

스크롤 드래깅 끝났어요.. 알려줌 

파라미터 willDecelerate = true면 감속하면서 애니메이션 false면 그냥 바로 스크롤 멈춤

 

scrollViewShouldScrollToTop

아이폰 상단 누르면 맨위로 가는 기능!! 말하는거임 ㅎ 

스크롤 뷰의 프로퍼티로 있는 scrollToTop:Bool (기본적은로 True를 가짐)가 true여야지 작동함

만약 scrollToTop:Bool가 false면 아에 함수가 작동하지 않음 근데 scrollToTop:Bool가 true고 scrollViewShouldScrollToTop의 리턴이 false면 함수는 호출되는데 스크롤이 위로 가지 않음 

 

반환 값 True = 맨 위로 스크롤 할 수 있음, False = 맨 위로 스크롤 할 수 없음.

 

scrollViewDidScrollToTop

아이폰 상단을 누르고 스크롤이 맨위로 가면 알려줌 

 

scrollViewWillBeginDecelerating

스크롤뷰가 감속을 시작했음을 알려줌 

프로퍼티 isDecelerating:Bool 로 감속을 제어가능 

 

scrollViewDidEndDecelerating

스크롤 뷰가 감속을 종료헀음을 알려줌(움직이다 멈췄을 때)

 

 

후기

 scrollToTop의 설명이 이해가 잘 되지 않아서 직접해봤습니다. 그냥 맨위로 가는건가 싶어서 스크롤해서 맨위로 올렸는데 미리 지정해둔 콘솔창이 안떠서 뭐지 ?? 했습니다. 그러다가 아이폰 상단을 치니까 콘솔창이 떠서 ㅋㅋㅋㅋㅋ 아 이거구나!! 했습니다.

 스크롤안에서의 줌, 애니메이션에 다른 딜리게이트함수는 추후에 다루겠습니다.  (쓸일있으면 ㅎ 지금은 아 저런것도 delegate로 되있구나.. ) 

실질적으로 무한스크롤을 할때에는 scrollViewDidScroll로 현재 스크롤 위치를 이용해서 구현하면 되겠네요 ㅎ

'iOS' 카테고리의 다른 글

[iOS] - UITableView  (0) 2021.09.26
[iOS] UIView 도큐먼트읽기  (0) 2021.07.16
[iOS] UserNotifications  (2) 2021.06.23
[iOS] 느껴봐 햅틱 진동  (0) 2021.06.08
[iOS] 다크모드 막기  (0) 2021.06.08