Несколько кнопок на UIImageView - PullRequest
0 голосов
/ 01 февраля 2012

У меня есть UIImageView на мой взгляд.Определенные части этого изображения я хочу использовать как UIButtons.Но проблема в том, что эти части изображения не имеют правильной формы.Я действительно ничего не пробовал.Немедленное решение, которое пришло мне в голову, состояло в том, чтобы распознать маленькие рамки изображения и поместить пользовательскую кнопку поверх этой рамки.Но поскольку часть изображения (область кнопок) не имеет правильной формы, эта концепция не удалась.

Как мне разместить кнопки на этом UIImageView, чтобы определенная часть (не правильной формы) изображения реагировала на некоторыедействие.

Рассмотрим следующее изображение:

enter image description here

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

Ответы [ 3 ]

3 голосов
/ 01 февраля 2012

Я могу придумать 2 варианта:

  1. первый

    -(CGFloat)percentFromHeight:(CGFloat)percent{
    return  (CGRectGetHeight(self.bounds)/100)*percent;
     }
    
    -(CGFloat)percentFromWidth:(CGFloat)percent{
    return  (CGRectGetWidth(self.bounds)/100)*percent;
    }
    
     - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    CGPoint currentTouchPosition = [touch locationInView:self];
    
    //first check if the tup is in the center
    if(currentTouchPosition.x > [view percentFromWidth:45] && currentTouchPosition.x < [view percentFromWidth:55] && currentTouchPosition.y > [view percentFromWidth:45] && currentTouchPosition.y < [view percentFromWidth:55]){
       //the tup is in the center
       //Do your thing
       return;
    
    }
    
     //if this is not in the center, check other options
    if(currentTouchPosition.x > [view percentFromWidth:50]){
        if(currentTouchPosition.y >  [view percentFromHeight:50]{
             //this is the bottom left side
        else{
             //this is the top left side
        }
    
    }else if(currentTouchPosition.x < [view percentFromWidth:50]{
         if(currentTouchPosition.y >  [view percentFromHeight:50]{
             //this is the bottom right side
        else{
             //this is the top right side
        }
     }
    
  2. секунда -

    создайте подкласс UIButton / UIImage по своему усмотрению и используйте UIBezierPath для рисования пользовательских фигур в drawRect:, затем используйте [UIBezierPath containsPoint], чтобы проверить, находятся ли они внутри пути вида / кнопки.

1 голос
/ 01 февраля 2012

Прочитайте эту тему - даже то же изображение.

0 голосов
/ 01 февраля 2012

Мое мнение: вы должны использовать метод прикосновений, чтобы найти, к какой части прикоснуться (используя рамку изображения и рамку сенсорных частей) и сделать соответствующее действие, чем добавить кнопку.

...