2012-04-04 8 views
1

나는이 이미지가 (또는 내가 다른 부분의 이미지를 분할 할 수 있습니다 내가 원하는 무엇UIGesture 인식

enter image description here

이 이미지에 UITapGestureRecognizer을 추가하는 것입니다 그것을 탭핑 된 리프에 따라 다른 액션을 갖기 위해 각 파트에 대해 UITapGestureRecognizer로 구성되고 추가됩니다. 각 리프에 대해 각각 다른 이미지로 이미지를 분할하면 UIImageViews가 겹쳐서 하나를 두드리면 다른 이미지의 꼭지로 인식됩니다. 하나의 이미지를 갖는 것은 다른 하나가 아닌 리프에 속한 화면의 포인트를 아는 것을 의미합니다.

어떻게해야하는지에 대한 모든 단서는 정말로 인정 될 것입니다. 감사합니다.

+1

어떻게 이미지가 생성된다? 경로에서 그리는 경우 경로를 저장할 수 있으며 경로에 접촉 지점이 있는지 확인할 수 있습니다. –

+0

@PhillipMills .png 파일이므로 응용 프로그램에서 그려지지 않습니다. – ubiAle

답변

2

제스처 인식기의 locationInView:을 검사하여 동작을 변경하십시오.

이미지를 하나의 단위로 처리하는 경우 제스처 인식기 콜백에이 이미지를 구현하여 어떤 "리프"(있는 경우)를 탭했는지 결정하십시오.

이미지를 여러 이미지로 처리하는 경우 콜백에 이미지를 구현할 수도 있고, 예를 들어 대리자의 gestureRecognizerShouldBegin:에 구현하여 리프 외부의 터치 이벤트가 표시되지 않도록 할 수도 있습니다.

편집 : 지점에 잎이 있는지 여부를 알아내는 데 도움이 필요하다는 것을 몰랐습니다. @ PhilipsMills는이 시점에서 정확합니다. 이미지를 어떻게 그려야하는지 알아야합니다.

추종 : 이것은 내 전문 분야 밖에 있습니다.

가장 쉬운 접근법 (히트 테스트의 관점에서)은 @PhillipMills가 제안한 Quartz 도면과 CGPathContainsPoint()을 사용하는 것입니다. PNG로 렌더링해야하는 상세한 그래픽이 있다면 히트 테스트를 위해 (사실상) 오버레이 된 간단한 경로를 만들 수 있습니다.

다른 옵션 인 AFAIK는 수학적으로 히트 테스트를 수행하지만 실제로는 경로가없는 CGPathContainsPoint()을 다시 구현하거나 터치 포인트에서 픽셀의 색상을 볼 수있는 다양한 트릭을 사용하여 적중 테스트를 수행합니다 . 당신이이 길로 간다면 인터넷 검색은 유용한 결과를 보여줄 것입니다. 그러나 그려진 것만 큼 단순한 도형에 대해서는 솔직히 코드로 다시 작성하려면 UIBezierPath 코드를 사용하십시오. 당신이 구성 요소로 분리 모양을 깰 수 있다면

+0

이미지는 .png 파일입니다. 이미지가 하나의 단위로 있으면 어떻게하면 도청 지점이 내 그림의 특정 리프에 있는지 파악할 수 있습니까?! – ubiAle

+0

실마리를 가져 주셔서 감사합니다. 나는 UIBezierPath를 사용한 적이 없지만 한번 살펴 보겠습니다. 건배! – ubiAle

1

확실하지 않음 도움이 되겠지만 어떤 잎이 클릭되었는지 알아내는 것에 매달려 있다면 이미지에서 픽셀 정확한 클릭 추적을 위해 CD-ROM 프로젝트에서 사용했던 오래된 이미지 맵 트릭을 사용할 수 있습니다.

풀 사이즈 이미지가 있습니다. 25 % (또는 그 이하) 크기의 버전을 만듭니다. 클릭 수를 추적하려는 각 잎 영역을 다른 색상으로 채 웁니다. 무시하고 싶은 모든 것은 검게 만듭니다. 전체 크기 이미지를 클릭하면 x/y 좌표를 가져 와서 크기 조정 된 이미지의 백분율로 크기를 조정합니다. 그런 다음 크기 조정 된 x/y 좌표에서 크기 조정 된 이미지의 픽셀 색상을 가져옵니다. 픽셀 색상을 결정하면 어떤 잎이 클릭되었는지 알 수 있습니다.

소리가 난무하지만 소리가 잘 들리고 빠릅니다.

(I 이미지의 알파 영역 제스처 인식기를 트리거 생각하지 않는다 말했다보십시오. - 그래서 이미지가 위로가 덜 복잡 할 것 파괴/코드 집약적) 을

+0

이미지는 다른 색상으로 채색되어 져야합니다. Quartz를 사용하여 드로잉하기가 어려울 경우 (이전에 해 본 적이 없으므로) 픽셀 컬러 기술을 사용하게 될 것입니다. 건배! – ubiAle