полигон UIView, чтобы запустить событие - PullRequest
0 голосов
/ 20 января 2011

Мне нужно что-то вроде этого:
карта изображения (я думаю, что это должно быть сделано с UIView некоторого рода), который представляет собой изображение (специальную карту) с некоторымиобласти (полигоны), которые должны вызывать событие при прикосновении ... Как сделать наложение полигона для изображений, которые инициируют событие?
Карта изображения , упомянутая выше, и UITableView вUIScrollView - но я думаю, что это не должно быть так сложно ...?После этого должен выглядеть так.

-------------------------- UIScrollView top
 +-----------------------+
 +    polygon UIView     +
 +-----------------------+
 +-----------------------+
 +      UITableView      +
 +-----------------------+
-------------------------- UIScrollView bottom

Заранее спасибо за ваши ответы!

1 Ответ

1 голос
/ 21 января 2011

Я бы создал подкласс UIView (например, DOMImageMapView) со списком CGPathRef или UIBezierPath экземпляров, связанных с ним.

В DOMImageMapView реализации drawRect:, вы должны нарисовать изображение, а затем выполнить итерацию по каждому экземпляру пути и заполнить его, используя CGContextFillPath() или -[UIBezierPath fill].

. Для тестов попадания вы должны реализовать touchesEnded:withEvent: (или аналогичный) и протестировать каждыйпуть через CGPathContainsPoint() или -[UIBezierPath containsPoint:].Если один из путей возвращает YES, вызовите метод-делегат, например imageMapView:didSelectArea:.

Ваш UITableViewController (или UIViewController с UITableView в нем) создаст DOMImageMapView и установитсам как delegate.При касании области контроллер получит обратный вызов и сможет соответствующим образом обработать событие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...