2013-04-23 3 views
3

원 안에 몇 개의 아이콘으로 내 앱용 메뉴를 만들려고합니다. 사용자가이 메뉴를 돌릴 수 있어야 아이콘이이 원 경로 주위에서 위치를 변경하지만 스스로 회전 할 수는 없습니다. 이 이전의 http://www.raywenderlich.com/9864/how-to-create-a-rotating-wheel-control-with-uikit을 읽었으므로 손가락 움직임을 따르는 방법을 볼 수 있지만이 메뉴는 터치가 끝난 후 관성 스핀을 갖기 위해 필요합니다. 이 작업을 수행하는 방법에 대해 2 가지 질문이 있습니다.아이콘이 원으로 회전하는 메뉴를 만드는 방법은 무엇입니까?

처음으로 원 안에서 움직이는 아이콘으로 애니메이션을 만드는 가장 좋은 방법은 무엇입니까? 그것은 멈출 때까지 천천히해야하고, 사용자가 그의 손가락을 충분히 빨리 움직이면, 하나 이상의 완전한 원을 할 수 있어야합니다.

둘째, 손가락 움직임의 속도를 어떻게 측정합니까? 나는 locationInView와 previousLocationInView를 사용하려고 시도했고, 그들 사이의 각도의 차이에 의해 단지 상수로 곱 해졌습니다. 문제는 내가 손가락을 한 곳에서 잠시 동안 가지고 감을 때, 나는 여전히 원의 관성 운동을 얻고,이 경우에는 전혀 움직이지 않기를 원한다.

답변

4

스크롤보기를 사용하려고합니다. 특히 스크롤 뷰의 팬 제스처 인식기를 사용자 정의 메뉴 뷰에 연결하는 숨겨진 스크롤 뷰가 필요합니다. 그런 다음 스크롤 뷰의 대리자 메서드를 구현하여 메뉴를 다시 그립니다. This WWDC video has a good overview of the process.이 접근 방식의 이점은 무료 iOS 스타일 가속 및 감속을 얻는 것입니다. 손가락 위치 나 속도는 걱정할 필요가 없으며 스크롤 뷰의 내용 오프셋 만 걱정하면됩니다.

메뉴 항목이있는 원을 빙글 빙글 돌리지 않는 한. 그것은 다른 볼 게임입니다 ...

이론상으로, 위와 같은 접근법을 사용하여 손가락을 원으로 회전시킬 수 있습니다. 스크롤보기에서 directionalLockEnabled이 NO로 설정되었는지 확인해야합니다. 문제는 메뉴보기의 회전을 결정하는 계산이 훨씬 더 복잡하다는 것입니다. 아마도 모달이되고 콜보기에서 스크롤 뷰가 dragging인지 확인하고 싶을 것입니다. 드래그하는 경우 팬 동작의 터치를 사용하여 회전을 설정하기위한 정확한 손가락 위치를 찾습니다. 또한 터치가 해제 될 때 손가락 움직임의 순간 방향에 대한 데이터를 유지하려고합니다. 드래그하지 않으면 스크롤 뷰 내용 오프셋을 사용하여 회전에 감속 효과를 적용합니다 (터치가 콘텐츠 오프셋 변경을 사용하는 방법을 알기 위해 해제되기 직전의 스크롤 방향).

+0

네, 그게 정확히하고 싶습니다. – johnyu