2009-11-16 2 views
1

데이터 행이 포함 된 테이블 뷰와 유사한 뷰를 구현하고 있습니다. 내가 뭘 하려는지 스크롤 후, 각 행은 정확한 위치 집합으로 스냅 그래서 상단과 하단 행의 경계가 완전히 볼 수 있습니다 - 그리고 일반적으로 일어나는대로 손질되지 않습니다. 스크롤이 시작되기 전에 스크롤 대상을 가져 오는 방법이 있습니까? 이 방법으로 최종 y 위치를 수정할 수 있습니다 (예 : 행 높이의 배수).스크롤 한 후 UIScrollView 내용의 쉬프트 위치를 설정/계산하는 방법

답변

3

저는 몇 주 전에 same question에게 물었습니다.

스크롤 감속의 마지막 Y 오프셋을 결정하는 공개 API가 없습니다. 더 자세히 조사한 후, 감속을 관리하는 방식에 대한 Apple의 공식을 파악할 수 없었습니다. 나는 스크롤링 이벤트에서 데이터를 수집하고, 시작 속도와 얼마나 멀리 감속을 기록했는지, 그리고 그로부터 멈출 가능성이있는 위치에 대한 대략적인 추정치를 기록했습니다.

내 목표는 어디에서 멈출 지 미리 예측하고 감속을 특정 오프셋 이동으로 변환하는 것이 었습니다. 이 기술의 문제점은 일정 기간 동안 항상 scrollRectToVisible:animated:이 발생하므로 사용자가 플릭 동작에서 기대하는 속도 대신 플릭의 강도에 따라 훨씬 빠르거나 느린 것입니다.

또 다른 선택은 감속을 관찰하고 어떤 임계점까지 느려질 때까지 기다린 후 scrollRectToVisible:animated:으로 전화를 걸지 만 "올바르게"얻는 것은 어렵습니다.

세 번째 선택 사항은 감속이 완료 될 때까지 기다린 후 원하는 오프셋 배수로 정지했는지 확인한 다음 그렇지 않은 경우 조정하는 것입니다. 나는 당신이 해안에 서서 멈추고 서서 속도를 높이거나 해안을 멈추고 반대 방향으로 갈 때,이 일을 개인적으로 돌 보지 않습니다.

+0

+1 좋은 답변입니다. iOS5를 사용하여 [scrollViewWillEndDragging : withVelocity : targetContentOffset :'] (http://developer.apple.com/library/IOS/documentation/UIKit/Reference/UIScrollViewDelegate_Protocol/Reference/UIScrollViewDelegate.html#)을 사용할 수있는 방법에 대한 답변을 추가했습니다. // apple_ref/doc/uid/TP40006923-CH3-SW15). – Sam

관련 문제