2009-07-23 5 views
1

UIImageView에로드 된 PNG 이미지에서 터치 이벤트를 감지하려고합니다. 터치가 예상대로 이미지 주변의 경계 사각형에 대해 테스트된다는 것만 제외하면 잘 작동합니다. 사용자가 UIImageView 자체가 아닌 보이는 PNG 부분을 선택했는지 테스트하고 싶습니다.Alpha가있는 PNG 터치 감지

예를 들어 말굽 모양 이미지가있는 경우 아무 것도 그려지지 않은 가운데 부분이 아닌면을 선택하면 터치에 응답해야합니다. 나는이 문제에 대한 상실감에 처해있다. 구글은 같은 문제를 가진 많은 사람들을 밝히고 있지만, 어디서부터 시작해야할지에 대한 힌트조차 없다.

+0

제어 할 수있는 몇 개의 이미지 또는로드하려는 이미지에이 기능이 필요합니까? – pgb

+0

어떤 이미지가로드되고 있는데 몇 가지 가짜 이미지가있을 수 있지만 더 많은 이미지를 볼 때 문제가되기 시작했습니다. –

답변

1

두 가지 방법 : 터치 된 픽셀이 투명 픽셀 인 경우

a) 귀하는 이미지의 픽셀 데이터를 검사 확인합니다. 이 작업을 가능하게하려면 오프라인 버퍼에 이미지를 그려야합니다. CGContextDrawImage 및 CGBitmapContextGetData를 사용하여 UIImage.CGImage에서 픽셀 데이터에 액세스합니다. Apple's Q&A은 픽셀 데이터에 액세스하는 기본 방법을 설명합니다.

b) 말발굽의 다각형 표현이 있고 말발굽이 만져 졌는지 확인하기 위해 다각형 히트 테스트를 사용합니다. Google에서 알고리즘을위한 "다각형을 가리 킵니다".

) 약간의 이미지에 대해이 기능이 필요한 경우 작업이 적지 만 히트 테스트 (많은 동작이있는 게임)가 많은 경우 b) 더 좋을 수 있습니다.

+0

A) 올바른 방향으로 나아가는 단계입니다. 그러나 그것은 터치 이벤트를 통해 그 아래에 놓이게되는 어떤 이미지로 옮겨 가지 않을 것입니다. B) 일부 이미지는 매우 복잡하며 다각형으로 쉽게 전달되지 않는 이미지 중심에 구멍이있을 수 있습니다. ) 여기서는 더 나은 방법처럼 보입니다. 더 깊이 조사 할 것입니다. 그러나 더 많은 문제를 열어 놓을 것이라고 생각합니다. –

관련 문제