размер UIView на основе drawRect

Итак, вот сценарий: я хотел бы добавить UIView в форме неправильного многоугольника поверх другого UIView. Я рисую неправильный многоугольник, используя метод drawRect UIView.

Я хотел бы знать, как сделать рамку UIView рамкой неправильного многоугольника?

Очевидно, я не могу использовать initWithFrame, так как это даст ему прямоугольную рамку.

Ваше здоровье


person stephen    schedule 19.03.2012    source источник


Ответы (1)


Рамка UIView является прямоугольником. Со страницы справочника по классам UIView :

рамка

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

Кадр @property(nonatomic) CGRect

Таким образом, вы никогда не сделаете представление frame чем-то иным, кроме CGRect. Однако вы можете просто использовать прямоугольник в качестве окружающего прямоугольника для вашего многоугольника. Нарисуйте многоугольник так, чтобы он точно помещался внутри прямоугольника, и оставьте область вне многоугольника прозрачной.

person Caleb    schedule 19.03.2012
comment
Да, но таким образом могут быть перекрывающиеся полигоны друг с другом, поскольку виды больше, чем они должны быть, и будут перекрываться друг с другом. Что я пытаюсь сделать, так это реализовать viewForAnnotation для карт, и мне нужно дать каждой аннотации настраиваемый вид в форме многоугольника, и когда многоугольник нажат, появляется вызов, не знаю, что произойдет, если многоугольники перекрываются с хотя друг друга. Есть ли другой способ? - person stephen; 19.03.2012
comment
Переопределите -pointInside:withEvent: в вашем представлении и верните YES, только если точка находится в вашем полигоне. - person Kurt Revis; 19.03.2012