Определить сенсорные координаты на одном UIImageview - PullRequest
2 голосов
/ 20 марта 2012

У меня есть одно изображение со статической картой страны, разделенной на регионы этой страны.То, что я хотел бы сделать, это определить местоположение касания на изображении и предоставить информацию о соответствующей области.Поскольку границы региона не являются линейными, как я могу сохранить область каждого региона?Нужно ли мне несколько изображений (или даже пользовательских UIButton с этими изображениями), каждое из которых относится к одному региону, или это возможно так, как я хотел бы?

Это первое, что пришло мне в голову, так что, возможно, естьболее простой и лучший способ, о котором я хотел бы услышать, и я не мог знать, как искать это, поэтому извиняюсь, если есть дубликат.И, конечно, я буду признателен за помощь.

Спасибо

Ответы [ 2 ]

2 голосов
/ 21 марта 2012

Один простой и точный способ - использовать OBShapedButtons Оле Бегемана - по одному для каждого состояния.

Это позволит вам точно определить, какое состояние было выбрано. Просто поместите изображение каждого состояния в отдельные кнопки (с прозрачным окружением) и расположите кнопки рядом друг с другом, чтобы границы состояний совмещались одна с другой.

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

1 голос
/ 20 марта 2012

Самый простой способ сделать что-то похожее на то, что вы хотите, - это просто поместить несколько UIB-кнопок поверх вашего UIImageView, сделав их тип настраиваемым (чтобы они были прозрачными). Как правило, заполните область каждой страны с помощью кнопок UIB. Если вы протестируете свое приложение, вы, вероятно, заметите, что люди будут касаться центра каждой страны, поэтому я не буду беспокоиться о получении 100% покрытия. В зависимости от формы стран, вероятно, будет достаточно одной или двух квадратных кнопок UIB.

Если вы хотите пойти по пути 100% покрытия, вы можете встроить каждую страну в отдельный подкласс UIImageView, и, когда вы обнаружите касание в любом месте, просмотрите изображение каждой страны и посмотрите, не является ли точка касания прозрачной. Когда вы нажмете это (непрозрачный пиксель), вы нашли страну. См. Этот пост для соответствующего кода: Как получить цвет пикселя в UIView?

...