2012-10-10 27 views
2

我是新來的目標C,並試圖將UIImageView的動畫從屏幕上的一組位置切換到使用UIButton在運行時創建的UIButton的屏幕上的另一組位置。當我按下UIButton時,我想讓UIImageView從一個位置到另一個位置進行動畫製作,而UIButton的setBackgroundImage切換到另一個imageNamed:狀態。使用在運行時創建的UIButton切換UIImageView的動畫

任何幫助將不勝感激!

// UIImageView - Roof Panel Creation 
roofPanel = [[UIImageView alloc]initWithFrame:CGRectMake(300, 400, 400, 400)]; 
[roofPanel setImage:[UIImage imageNamed:@"roof-panel.png"]]; 
[self.view addSubview:roofPanel]; 

// UIButton - Panel Lift Button Creation 
panelLiftButton = [[UIButton alloc]initWithFrame:CGRectMake(722, 300, 70, 50)]; 
[panelLiftButton setImage:[UIImage imageNamed:@"panel-lift-button.png"] forState:UIControlStateNormal]; 
[self.view addSubview:panelLiftButton]; 

回答

0

首先歡迎客觀C,您將享受與這個偉大的語言編碼...

你必須設置UIControlStateSelected到UIButton的圖像再加入目標(一個UIButton的IBAction爲)正如我在下面的代碼中所示...

確保UIControlStateSelected和UIControlStateNormal的圖像必須不同。

panelLiftButton = [[UIButton alloc]initWithFrame:CGRectMake(722, 300, 70, 50)]; 
    [panelLiftButton setImage:[UIImage imageNamed:@"panel-lift-button.png"] forState:UIControlStateNormal]; 
    [panelLiftButton setImage:[UIImage imageNamed:@"panel-lift-button_ON.png"] forState:UIControlStateSelected]; 
    [panelLiftButton addTarget:self action:@selector(toggleImage:) forControlEvents:UIControlEventTouchUpInside]; 
    [self.view addSubview:panelLiftButton]; 

然後作出這樣的功能.....

-(IBAction)toggleImage:(id)sender 
{ 
    UIButton * btn = (UIButton*)sender; 
    btn.selected = ! btn.selected; 
    if (btn.selected) 
    { 
     [UIView animateWithDuration:0.3 animations:^{ 
      [roofPanel setFrame:CGRectMake(0, 0, 400, 400)];//here you can set your desired frame. 
     }]; 
    } 
    else 
    { 
     [UIView animateWithDuration:0.3 animations:^{ 
      [roofPanel setFrame:CGRectMake(300, 400, 400, 400)];//here you can set your original frame. 
     }]; 

    } 

} 

享受與目標C.

編碼