2011-12-29 85 views
0

我正在製作iPhone遊戲,讓用戶選擇他們希望自己的汽車在遊戲中使用的顏色。爲了顯示哪些車可以選擇我有UIButtons與各種汽車的背景圖像。爲了顯示當前選擇哪輛車,我在背景顏色爲黃色的當前汽車顏色後面有一個按鈕。我想要發生的是,當你點擊一個汽車按鈕時,黃色按鈕移動到被點擊的按鈕後面。我的代碼看起來像:UIButton不會以編程方式更改邊界

-(void)setPlayerCar:(UIButton *)newCar{ 
    //this code is being called when any of the buttons is clicked 
    NSArray *carFiles = [NSArray arrayWithObjects:@"redCar.png",@"blueCar.png",@"greenCar.png",@"purpleCar.png",@"turquioseCar.png",@"yellowCar.png", nil]; 
    NSString *file = [carFiles objectAtIndex:newCar.tag]; 
    currentCarImage = file; 
    CGRect frame; 
    if(currentCarImage == @"redCar.png"){ 
     frame = CGRectMake(48, 78, 30, 30); 
    } 
    if(currentCarImage == @"blueCar.png"){ 
     frame = CGRectMake(83, 78, 30, 30); 
    } 
    if(currentCarImage == @"greenCar.png"){ 
     frame = CGRectMake(118, 78, 30, 30); 
    } 
    if(currentCarImage == @"purpleCar.png"){ 
     frame = CGRectMake(153, 78, 30, 30); 
    } 
    if(currentCarImage == @"turquioseCar.png"){ 
     frame = CGRectMake(188, 78, 30, 30); 
    } 
    if(currentCarImage == @"yellowCar.png"){ 
     frame = CGRectMake(223, 78, 30, 30); 
    } 
    for(UIButton *button in self.pauseScroll.subviews){ 
     if(button.backgroundColor == [UIColor yellowColor]){ 
      button.bounds = frame; 
     } 
     if(button.tag == newCar.tag){ 
      [self.pauseScroll bringSubviewToFront:button]; 
     } 
    } 
} 

據我所知,這應該將黃色按鈕移動到被選中的按鈕。問題是這不會發生,當我調試時我發現正確的按鈕被識別,並且該框架被賦予正確的值,並且該行:button.bounds = frame;正在執行,但當我看看什麼是顯示什麼都沒有改變。

+1

'currentCarImage == @ 「redCar.png」'這不是你如何比較字符串你需要'[currentCarImage isEqualToString:@ 「redCar.png」]' – 2011-12-30 00:00:12

+0

我也會考慮改變'if'聲明到'else if'語句,這樣你就不會每次都執行每個測試。此外,'carFiles'數組可能會更好地放置在其他地方最有可能在法老 – 2011-12-30 01:31:51

回答

1

您應該更改按鈕的frame而不是bounds。視圖的bounds描述視圖在其自己的座標空間中的位置和大小。 frame是超級視圖座標空間中的大小和位置。

if (button.backgroundColor == [UIColor yellowColor]) { 
    button.frame = frame; 
} 
+0

謝謝工作 – 2011-12-30 01:02:50

相關問題