2010-02-16 2 views
1

Я хотел бы спросить, что является лучшим способом добиться следующего кодирования с помощью какао для IPhone.Пользовательская кнопка Pause Play Iphone

Как учебное упражнение, я хотел бы сделать очень простой mp3-плеер. В настоящий момент меня интересует именно пользовательские визуальные компоненты для этого игрока.

В частности, как я могу создать пользовательскую кнопку паузы при воспроизведении с помощью мыши и состояний mousedown?

Кроме того, я хотел бы иметь «выдвижной ящик», который открывается и закрывается в зависимости от кнопки воспроизведения/паузы, показывает состояние воспроизведения или паузы.

При нажатии кнопки значок кнопки меняется на значок паузы, а слайдер выдвигается. Когда нажата пауза, значок паузы меняется на значок воспроизведения, и ящик закрывается.

Должен ли я смотреть на кварц для этого?

ответ

2

Не нужно использовать кварц.

Начинается с UIButton. Вы можете назначить только одно изображение кнопке (и она будет обрабатывать выделение ее на ощупь) или назначить другое изображение для каждого состояния кнопки, если вы хотите настроить, как он выглядит при подсвете (setImage:forState:). Чтобы добиться эффекта переключения между воспроизведением и паузой, вы должны заменить изображения кнопки всякий раз, когда они используются (в вашем действии для UIControlEventTouchUpInside).

Для анимации выдвижного ящика создайте UIView, который будет служить в качестве выдвижного ящика и добавит его в ваш основной вид. Отрегулируйте его рамку так, чтобы она была размещена на экране. Затем, когда вы хотите, чтобы оживить его на экране, использовать простой анимации блок:

[UIView beginAnimations:nil context:nil]; 
drawerView.center = CGPointMake(...); // set coordinate to the end position 
[UIView commitAnimations]; 

Try читать на все это в документации. Затем задайте более конкретные вопросы, если у вас все еще есть проблемы.

+0

Это отличный старт точка. Вы спасли меня много лаяли неправильное время в дереве – dubbeat

1

Я принял ваши предложения и посетил центр ссылок dev. Изменение состояния кнопки паузы воспроизведения было очень легким.

Однако добавление моих панелей в мой UIVIEWController и анимацию для меня очень сложно (цель-новичок).

Прежде всего, когда я пытаюсь сделать мои взгляды панели я получаю предупреждение о том, что панель 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; 
    } 
} 
Смежные вопросы