Как ограничить распознавание жестов касанием iPhone внутри кругового изображения? - PullRequest
5 голосов
/ 24 июля 2010

Я пытаюсь разместить круглое изображение на экране iPhone, а затем использовать метки внутри круга, но не за его пределами. Проблема, с которой я сталкиваюсь, заключается в том, что, когда я помещаю UIImageView в представление экрана в Интерфейсном Разработчике, я, кажется, ограничен прямоугольной формой. Я попытался использовать изображение круга с областью вне круга, оставленной прозрачной, но в целом изображение все еще остается прямоугольным, поэтому, когда оно помещается в UIImageView и подключается для распознавания жестов касания, оно все равно фиксирует касания за пределами самого круга. .

Изображение ниже показывает, что я имею в виду. Синие точки представляют внешнюю границу UIImageView, который содержит изображение. Распознавание жестов касания в настоящее время связано с этим UIImageView, но, как вы можете видеть, в углах UIImageView есть немного места, которые не покрыты круглым изображением. Есть ли какой-либо способ либо согласовать UIImageView с непрямоугольной формой, либо поместить изображение в представление без использования UIImageView и при этом иметь возможность подключать распознавание касаний?

изображение Уолтера с прозрачным фоном на UIImageView http://img237.imageshack.us/img237/2164/walterheadshot.png

Я довольно новичок в графике iPhone, но есть ли у кого-нибудь какие-то идеи по этому поводу или можно указать мне правильное направление?

Спасибо!

1 Ответ

4 голосов
/ 24 июля 2010

Предполагается круг, а не просто овал:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    CGFloat halfSize = [self bounds].size.width * 0.5f;
    CGPoint location = [[touches anyObject] locationInView:self];
    location.x -= halfSize;
    location.y -= halfSize;
    CGFloat squaredDistanceFromCenter = location.x * location.x + location.y + location.y;
    if (squaredDistanceFromCenter < (halfSize * halfSize)) {
        NSLog(@"Within circle :)");
    } else {
        NSLog(@"Not within circle :(");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...