2009-04-24 6 views
5

UIScrollView의 flick-to-scroll 동작을 재현하고 싶습니다. 그러나이 클래스를 사용하고 싶지는 않습니다. 내가 무엇을 할 수 있을지?iPhone UIScrollView의 제스처 동작을 내 자신의보기로 재현하려면 어떻게해야합니까?

+0

참고 : 질문은 OpenGL보기에 관한 것이 었습니다. – Thanks

+0

사실, _my_에서 OpenGL보기에 대해 생각하고있었습니다. 그러나 아래의 Roger Nolan에 대한 제 응답을 참조하십시오. - 나는 많은 흥미로운 비 OGL 사례도 있다고 생각합니다. –

답변

8

좋아, 나는 UIScrollView의 다이내믹을 캡처하는 내 자신의 라이브러리를 구현하여 대답했습니다.

내 코드에 유용한 점은 좌표계, 애니메이션 속도 및 사용중인 특정 UI 클래스와 별개라는 것입니다. 선택한 사용자 정의보기 클래스에서 쉽게 중첩 될 수 있습니다.

아이폰의 기본 플릭 - 스크롤 동작은 흥미 롭습니다. 오랫동안 손가락을 아래로 잡고 다양한 방향으로 움직이면 가장 마지막 방향 만 스크롤 동작을 계산하는 데 사용됩니다.

그러나이 코드를 직접 만들려고하면 모션의 방향을 계산하기 위해 마지막 두 점을 사용하는 것만으로 절단하지 않을 것입니다. 대신, 내 코드는 터치의 역사를 짧게 유지하고 선형 보간법을 사용하여 터치가 어느 정도 시간이 경과했는지를 판단합니다. 이 보간 된 점은 모션 벡터를 계산하기위한 기초로 사용됩니다. 이것은 매우 즐거운 상호 작용을하게됩니다.

코드는 github에서 사용할 수 있습니다. 여기서는 http://gist.github.com/100855입니다. BSD 라이센스하에 배포됩니다.

+0

당신은 자신의 질문에 답했습니다. 2 분 안에 질문을했습니다. 재미있는 코드이므로 OK! –

+0

그래, 그게 스택 오버플로에 대한 정결한지 모르겠지만, 내가 그것을 찾은 유일한 사람이 아니기 때문에 나는 도움이 될 것이라고 생각했다. 더 나은 포럼이 있습니까? –

0

그래서 UIScrollView가 당신에게 적합하지 않았습니까? 그 클래스는

+0

게임용 OpenGL 뷰가 있는데 UIScrollView와 비슷한 방식으로 뷰포트를 제어 할 수 있기를 원합니다 ... –

0

데이브, 당신이 몇 가지 코드를 사용하여 자신의 질문 answerd했지만 볼 ... 꽤 유연하다, 당신이 필요로하는 무엇을주는 다음과 같은 설정하지 않습니다

myScrollView.bounces = YES; 
myScrollView.pagingEnabled = YES; 
myScrollView.directionalLockEnabled = YES; 

을 구체적를 directionLockEnabled을 다시 구현 한 것 같습니다. 아마도 UIScrollView를 사용할 수없는 이유를 이해하는 것이 더 흥미로운 문제입니다 .-)

+0

위의 내 설명을 참조하십시오. UIScrollView가 갈 수없는 컨텍스트에서 동작을 재현하려고합니다. (또는 적어도 가지 않아야합니다.) –

+0

(그리고 : 내가 한 것은 몇 가지 속성을 설정하는 것과 같지 않습니다. 스크롤 뷰에. 내가해야 할 일이 있다면 - 음, 나는 그렇게했을 것이다. : –

+0

... 그리고 나는 그것이 무엇인지 ;-)에 관심이있다. –

0

이것은 멋집니다! 1902-2037 범위의 그래픽 데이터를 하루 동안 스크롤 할 수있는 뷰로 사용하므로 UIScrollView가 효율적이지 않습니다.