iOS: Неквадратные области нажатия для кнопок

#cocoa-touch #ios #button #uikit

#cocoa-touch #iOS #кнопка #uikit

Вопрос:

Мне нужно сделать несколько треугольных кнопок, которые перекрывают друг друга.

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

Я использую фоновую версию FLash, поэтому обычно я бы создал область нажатия для своего просмотра, но я не верю, что смогу сделать это в Cocoa.

Есть какие-нибудь советы?

Ответ №1:

Вы можете добиться этого, создав подкласс UIButton и предоставив свой собственный:

 - (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
    // return YES if point is inside the receiver’s bounds; otherwise, NO.
}
  

В документации Apple по UIView приводятся подробности, такие как подтверждение того, что point это уже находится в системе координат получателя.

Комментарии:

1. Спасибо, я изучу это. Здесь есть хорошая статья, описывающая решение с использованием изображения с альфа-символом iphonedevelopment.blogspot.com/2010/03 /…

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