2012-02-01 78 views
0

我创建了两个UIButton,并且只有播放按钮出现在UIToolbar上。在我想要的播放方式中,当播放按钮被按下时,它显示暂停按钮,并且如果用户按下暂停按钮,则暂停音频文件,然后显示播放按钮。播放/暂停之间切换UIButtons

UIButton *playButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

[playButton addTarget:self action:@selector(play:) forControlEvents:UIControlEventTouchUpInside]; 

playButton.frame = CGRectMake(0, 0, 50, 50); 

UIImage *image = [UIImage imageNamed:@"play.png"]; 

[playButton setImage:image forState:UIControlStateNormal]; 

UIBarButtonItem *play = [[UIBarButtonItem alloc] initWithCustomView:playButton]; 



UIButton *pauseButton = [UIButton buttonWithType:UIButtonTypeCustom]; 

[pauseButton addTarget:self action:@selector(pause:) forControlEvents:UIControlEventTouchUpInside]; 

pauseButton.frame = CGRectMake(0, 0, 50, 50); 

UIImage *imge = [UIImage imageNamed:@"pause.png"]; 

[pauseButton setImage:imge forState:UIControlStateNormal]; 

-(void)play:(id)sender 
{ 

NSString *filePath = [[NSBundle mainBundle] pathForResource:@"theme" 
                ofType:@"mp3"]; 

NSURL *fileURL = [[NSURL alloc] initFileURLWithPath:filePath]; 

audioPlayer = [[AVAudioPlayer alloc] 
       initWithContentsOfURL:fileURL error:nil]; 

audioPlayer.currentTime = 0; 

[audioPlayer play]; 

[fileURL release]; 

} 

我需要协助执行这项

在剧中方法

我做

[audioPlayer play]; 

UIImage *imge = [UIImage imageNamed:@"pause.png"]; 

[pauseButton setImage:imge forState:UIControlStateNormal]; 

[audioPlayer pause]; 

UIImage *image = [UIImage imageNamed:@"play.png"]; 

[playButton setImage:image forState:UIControlStateNormal]; 

[audioPlayer Play]; 

我觉得我在做错误的方式

请指点。

感谢您的帮助。

感谢

+0

这是一个有点混乱,你有两个按钮。你是否试图让戏剧和停顿互相替换? ['>'更改为'||']? – nycynik 2012-02-01 22:25:42

+0

是的,当播放按钮被击中时,它应该播放音乐并用暂停按钮替换播放按钮,当暂停按钮被击中时,它应该暂停音乐,并且应该显示播放按钮 – user1120133 2012-02-01 22:34:13

回答

2

使用一个与每个状态(选择和正常)1个图像按钮:

UIButton *mediaButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
mediaButton.frame = CGRectMake(0, 0, 50, 50); 

[mediaButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal]; 
[mediaButton setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateSelected]; 

[playButton addTarget:self action:@selector(mediaAction:) forControlEvents:UIControlEventTouchUpInside]; 

-(void)mediaAction:(UIButton *)sender 
{ 
    if(sender.selected){ 
    // pause action 
    } else { 
    // play action 
    } 

    sender.selected = !sender.selected; 
} 
0

你的意思是:

if([audioPlayer isPlaying]) { 
    UIImage *imge = [UIImage imageNamed:@"pause.png"]; 
    [pauseButton setImage:imge forState:UIControlStateNormal]; 
    [audioPlayer pause]; 
} 
else { 
    UIImage *image = [UIImage imageNamed:@"play.png"]; 
    [playButton setImage:image forState:UIControlStateNormal]; 
    [audioPlayer Play]; 
} 

是正确的?

+0

是的,这就是我所拥有的,未使用的变量图片 – user1120133 2012-02-01 22:36:56

+0

你得到那个警告,因为你不使用它,因为你不需要。 – erkanyildiz 2012-02-01 22:38:26

1

您不必创建两个单独的按钮。只需创建一个按钮和一个方法。只要将状态保持在一个布尔变量或使用玩家状态。在方法中检查状态后,做你需要做的事情。

但是,如果您坚持要创建两个单独的按钮,您可以隐藏并显示其中一个按钮。

+0

如何将状态保存在布尔变量中或使用玩家状态 – user1120133 2012-02-01 22:42:43

+0

在方法中定义一个bool变量,并在方法结束时将其反转。 !myBoolVariable = myBoolVariable; – erkanyildiz 2012-02-01 22:45:46