Пусть UITouch выполняет задачу только при касании определенного цвета

Как я могу заставить UITouch распознавать и выполнять определенную задачу ТОЛЬКО, когда я касаюсь определенного цвета в представлении UIImage.

Например:

У меня есть изображение улицы. На улице сероватые здания и белая дорога. Если я коснусь здания, я не хочу, чтобы что-то произошло, но если я коснусь белой дороги, я хочу выделить участок, где я коснулся, голубым цветом.


person Matt S.    schedule 19.07.2010    source источник


Ответы (1)


  1. Захват сенсорных событий на вашем изображении
  2. Используйте местоположение касания, чтобы получить цвет пикселя в этом месте.
  3. Решите, представляет ли цвет дорогу или здание.

Получите точные сенсорные координаты

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{
    UITouch *touch = [touches anyObject];
    CGPoint touchPoint = [touch locationInView: imageView];

    // Here are your touch coordinates
    touchPoint.x
    touchPoint.y
}

Получите цвет пикселя в этом месте: код для получения цвета пикселя.

Решите, представляет ли цвет дорогу.

// 230 used as example, Experiment to find a good value
if (red >230 && green >230 && blue >230)
{
    // turn street blue
}
person bearMountain    schedule 11.12.2011
comment
Чтобы получить значение одного пикселя, не стесняйтесь проверять это gist.github.com/1377949. - person epatel; 11.12.2011