2012-10-10 28 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.

编码