원형 스크롤 메커니즘을 어떻게 구현할 수 있습니까?
-
06-07-2019 - |
문제
사용자가 선택해야 할 몇 가지 이미지가 있습니다. 이제 나는 지루한 그리드가있는 평평한 스크롤 영역을 제공하고 싶지 않습니다. 대신, 나는 그 이미지가 들어있는 휠을 표시하고 싶습니다. 상단에는 선택을 나타내는 마커가 있습니다. 피커와 비슷한 것.
문제는 회전이 아닙니다. 나는 그것을 위해 몇 가지 기하학적 기능을 사용합니다. 그러나 나는 그 바퀴에 실제로 스크롤 제스처를 얻는 방법을 모른다. 어디서부터 시작해야합니까?
BTW : 원형으로 나는 피커와 같은 것을 의미하지 않습니다. 나는 중심 축이 있고 굴릴 수있는 실제 휠을 의미합니다. 아주 오래된 전화처럼 자전거 휠처럼. 또는 피커가 90 ° 씩 돌면서 축을 향하고 있습니다 (z- 좌표).
해결책
제스처를 포착하는 것에 대해 이야기하고 있다면 여기에 있습니다 그들이 문서에 제공하는 예.
맹세 할 수 있었지만 Alan Cannistraro가 첫 번째 중 하나에서 말하는 것을 들었습니다. CS193P 강의 당신이 이것을 할 필요가 없다면, 당신은 스 와이프 이벤트를 가두 수 있지만 나는 그것을 찾을 수 없습니다.
그들이 무엇을하고 있는지 실제로 아는 사람이 저를 수정 하고이 게시물을 제거 할 것입니다. 그러나 지금은 이것이 효과가 있다는 것을 알고 있습니다.
#define HORIZ_SWIPE_DRAG_MIN 12
#define VERT_SWIPE_DRAG_MAX 4
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
startTouchPosition = [touch locationInView:self];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
CGPoint currentTouchPosition = [touch locationInView:self];
// If the swipe tracks correctly.
if (fabsf(startTouchPosition.x - currentTouchPosition.x) >= HORIZ_SWIPE_DRAG_MIN &&
fabsf(startTouchPosition.y - currentTouchPosition.y) <= VERT_SWIPE_DRAG_MAX)
{
// It appears to be a swipe.
if (startTouchPosition.x < currentTouchPosition.x)
[self myProcessRightSwipe:touches withEvent:event];
else
[self myProcessLeftSwipe:touches withEvent:event];
}
else
{
// Process a non-swipe event.
}
}
다른 팁
피커보기와 얼마나 비슷한가? 이미지보기 일 수있는 고유 한 사용자 정의 하위 뷰로 픽커보기를로드 할 수 있습니다. 그것은 당신이 당신의 이미지를 통해 실제 피커보기를 얻을 수 있습니다. 그것은 당신이 실제로 목표로하고 있거나 아닐 수도 있습니다.