2013-06-20 3 views
2

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

Фоновое изображение - это просто png (имеет прозрачность), но другие кнопки, которые я создал, работают до тех пор, пока вы касаетесь рамки. Есть идеи?

-(void)displayPauseButton 
{ 
    NSArray *pauseInfo = [self.sharedGameModel.theAssets objectForKey:@"buoy-ani"]; 

    // 
    // add mascot button 
    // aButtonArray has the info for a individual button in an array 
    // the buttons are read from the array in this order 
    // 0 array of images for the button animation triggered when clicked 
    // 1 x position 
    // 2 y position 

    // this array only has the names of the image animation 
    // so we init 
    NSArray *pauseImages = [pauseInfo objectAtIndex:0]; 
    UIImage *pauseImage = [UIImage imageNamed:[pauseImages objectAtIndex:0]]; 
    CGFloat theX=[[pauseInfo objectAtIndex:1] floatValue]; 
    CGFloat theY=[[pauseInfo objectAtIndex:2] floatValue]; 

    // create a new mutable array to fill with the actual object 
    // in the following loop 
    NSMutableArray *buttonAniImages = [[NSMutableArray alloc] init]; 
    for (id object in pauseImages) 
    { 
     [buttonAniImages addObject:[UIImage imageNamed:object]]; 
    } 

    // sets the custom image for the button 
    [self.pauseButton setImage:pauseImage forState:UIControlStateNormal]; 

    self.pauseButton.frame = CGRectMake(theX, theY, pauseImage.size.width, pauseImage.size.height); 
    self.pauseButton.imageView.animationImages = buttonAniImages; 

    self.pauseButton.imageView.animationDuration=3.0; 
    self.pauseButton.imageView.animationRepeatCount=1; 

    [self.gameScreen addSubview:self.pauseButton]; 

    // add the action associated with the button 
    [self.pauseButton addTarget:self action:@selector(someoneHitThePauseButton:) forControlEvents:UIControlEventTouchUpInside]; 
} 
+0

Ваша карандашная рамка нужного размера? – nielsbot

+1

Да, на самом деле есть только два варианта: вы рисуете за пределами своего вида кнопки, или ваш вид кнопки имеет другой вид, частично перекрывающий его. – escrafford

+0

Попробуйте записать self.gameScreen.bounds и проверьте, не находится ли нижняя часть вашей кнопки вне границ. – Guferos

ответ

1

Escrafford is right. Наверху было что-то, только никогда не было видно сверху. Я добавлю свой опыт на случай, если кто-то еще столкнется с той же проблемой.

В моей игре есть несколько UIView, которые имеют анимацию пути. Первоначально их исходные рамки были установлены на 0,0, а затем начальные точки пути были скорректированы случайным образом. Но их исходные рамки покрывали верхнюю часть кнопок.

Спасибо всем, кто предоставил отзыв.