Я принял ваши предложения и посетил справочный центр разработчиков. Изменение состояния кнопки паузы воспроизведения было легким.
Однако добавление моих подпредставлений панели в мой UIVIEWController и анимация оказываются очень трудными для меня (target -c новичок).
Прежде всего, когда я пытаюсь сделать панельные виды, я получаю предупреждения о том, что панель UIView may not respond to initWithFrame. (initwithframe is a function of UIView ?)
Во-вторых, я не могу добавить изображение на свою панель UIView. Я получаю предупреждение, сказав
warning: passing argument 1 of 'addSubview:' from distinct Objective-C type
.
Наконец, при попытке применить анимацию к моей панели я получаю сообщение об ошибке:
UIView 'может не отвечать на' -commitAnimations 'и любой другой связанный с анимацией метод, который я пытаюсь добавить.
Вы можете помочь? Я думаю, что в основном я не понимаю, почему я получаю эти предупреждения «может не отвечать на метод», поскольку я вызываю метод с правильным типом (или я так думаю)
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
// SET UP THE PLAY PAUSE BUTTON
playPause = [UIButton buttonWithType:UIButtonTypeCustom];
playPause.frame = CGRectMake(-20,280, 100,100);
[playPause setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
[playPause addTarget:self action:@selector(buttonPushed:)
forControlEvents:UIControlEventTouchUpInside];
playing=NO;
//SET UP THE AUDIO PLAYER
NSLog(@"Set up theAudio");
NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/DumpTheChump.mp3", [[NSBundle mainBundle] resourcePath]]];
NSError *error;
audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error];
audioPlayer.numberOfLoops = -1;
//SETUP THE BOTTOM part of the PANEL
UIImage *panelBottomImage=[UIImage imageNamed:@"panel_bottom.png"];
panelBottom=[UIView initWithFrame:(CGRectMake(-20, 280, 285, 128))];
[panelBottom addSubview:panelBottomImage];
//SETUP THE TOP PART OF THE PANEL. (THE ONE THAT SHOULD SLIDE UP AND DOWN)
UIImage *panelTopImage=[UIImage imageNamed:@"panel_top.png"];
panelTop=[UIView initWithFrame:(CGRectMake(-20, 280, 285, 128))];
[panelTop addSubview:panelTopImage];
[self.view addSubview:panelBottom];
[self.view addSubview:panelTop];
[self.view addSubview:playPause];
// 285*128
}
- (void) buttonPushed:(id)sender
{
NSLog(@"It works!");
switch (playing) {
case NO:
playing=YES;
[audioPlayer play];
[playPause setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
[panelTop beginAnimations:nil context:nil];
[panelTop setAnimationDuration:2];
[panelTop setAnimationDelegate:self];
//UIView setAnimationDidStopSelector:@selector(onAnimationC omplete:finished:context;
// set the position where button will move to
panelTop.frame = CGRectMake(-20, 100, 285, 128);
[panelTop commitAnimations];
break;
case YES:
playing=NO;
[audioPlayer pause];
[playPause setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
[playPause setImage:[UIImage imageNamed:@"pause.png"] forState:UIControlStateNormal];
[panelTop beginAnimations:nil context:nil];
[panelTop setAnimationDuration:2];
[panelTop setAnimationDelegate:self];
//UIView setAnimationDidStopSelector:@selector(onAnimationC omplete:finished:context;
// set the position where button will move to
panelTop.frame = CGRectMake(-20, 280, 285, 128);
[panelTop commitAnimations];
break;
default:
break;
}
}