2014-12-09 5 views
0

У меня есть UIImageView, состоящий из двух изображений с активированным каналом прозрачности.iOS: обнаружение касания на изображении в UIImageView, содержащем несколько изображений

мнение выглядит примерно так: image

Я хотел бы быть в состоянии обнаружить точно штрихи в центре круга, и отличить их от тех, в outern окружности.

Я имею в виду алгоритм обнаружения столкновений, основанный на различии между двумя кругами. Первый тест в верхнем слое, чтобы увидеть, есть ли столкновение вообще, а затем во внутреннем слое. Если во внутреннем слое активируйте внутреннюю кнопку botton, иначе активную кнопку outurn.

Любая помощь или предложение в этом вопросе?

Должен ли я создать репозиторий github, чтобы каждый мог внести свой вклад?

+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) 'while' b

+0

Хорошо, я принимаю к сведению. Спасибо. –

Смежные вопросы