2014-12-09 2 views
0

transparance 채널이 활성화 된 두 이미지로 구성된 UIImageView가 있습니다. 나는이 센터 서클 내에서 정확하게 터치를 감지하고 outern 원의 것들과 구별 할 수 있도록하고 싶습니다 imageiOS : 여러 이미지가 포함 된 UIImageView 내 이미지 터치 감지

:

뷰는 다음과 같이 보인다.

두 개의 원 사이의 차이를 기반으로하는 충돌 감지 알고리즘을 생각하고 있습니다. 먼저 outern 레이어에서 충돌이 있는지 그리고 내부 레이어에서 충돌이 있는지 테스트합니다. 내부 레이어에있는 경우 내부 botton을 활성화합니다. 그렇지 않으면 활성 버튼을 활성화합니다.

이 문제에 대한 도움이나 제안이 있으십니까?

모두가 기부 할 수 있도록 기저귀 저장소를 만들까요? 당신을 도울 수있는 것보다

다음
+0

미리 – humblePilgrim

+0

내가 생각 것 절반 이미지 너비에 알려진 두 개의 원의 반경인가? –

+0

예. 정확하게 너비를 나눔으로써 알 수 있습니다. 그러나 내부 원의 반경이 외부 원보다 작습니다. 내부 원을 사용하는 것이 가장 좋습니다. – mm24

답변

1

뭔가 :

UIImageView *myImageView; 
// In viewDidLoad, the place you are created your UIImageView place this: 

myImageView.userInteractionEnabled = YES; 
UITapGestureRecognizer *tapInView = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapInImageView:)]; 
[myImageView addGestureRecognizer:tapInView]; 

} 

-(void)tapInImageView:(UITapGestureRecognizer *)tap 
{ 
CGPoint tapPoint = [tap locationInView:tap.view]; 

CGPoint centerView = tap.view.center; 

double distanceToCenter = sqrt((tapPoint.x - centerView.x)*(tapPoint.x - centerView.x) + (tapPoint.y - centerView.y)*(tapPoint.y - centerView.y)); 
if (distanceToCenter < RADIUS) { 
    // It's in center 
} else { 
    // Touch outside 
} 
+0

그냥 부작용이 있습니다 - 문제와 관련이 없습니다. 이 경우에는 성능 문제라고 생각하지 않습니다. 그러나 만약에 당신이 어떤 더 큰 루프 안에서 이것을 재사용하고 싶다면 ... 'distanceToCenter'를위한 제곱 경로를 취하지 말고'RADIUS'의 제곱과 비교하십시오. 그것은 특히 RADIUS가 어쨌든 상수 일 때 훨씬 빠릅니다. 그러나 'a * a'변수가 'sqrt (b)'보다 훨씬 빠르게 계산되는 반면 'b

+0

좋아, 나는주의를 기울인다. 고맙습니다. –

관련 문제