繁体   English   中英

在歌曲加载时间中,如果用户使用AVAudioplayer单击iPhone中的播放按钮,如何显示活动指示器

[英]In song loading time how to display activity indicator if user click the play button in iPhone using AVAudioplayer

我正在iOS的AVAudioplayer中工作。 如果用户单击播放按钮,我将显示一个加载时间的活动指示器。 我的问题是,当我单击播放按钮时,加载时间活动指示符未显示。 在播放时间显示的活动指示器是我的问题。

-(void)viewDidLoad
{
    // loading View
    loadingView=[[UILabel alloc]initWithFrame:CGRectMake(135, 200, 40, 40)];
    loadingView.backgroundColor=[UIColor whiteColor];
    loadingView.clipsToBounds=YES;
    loadingView.layer.cornerRadius=10.0;
    activityView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhite];
    activityView.frame = CGRectMake(10, 11, activityView.bounds.size.width, activityView.bounds.size.height);
    [loadingView addSubview:activityView];
}

-(void)playOrPauseButtonPressed:(id)sender
{
    if(playing==NO)
    {
        [UIApplication sharedApplication].networkActivityIndicatorVisible=YES;
        [self.view addSubview:loadingView];
        [activityView startAnimating];
        [playButton setBackgroundImage:[UIImage imageNamed:@"Pause.png"] forState:UIControlStateNormal];

        // Here Pause.png is a image showing Pause Button.
        NSError *err=nil;
        AVAudioSession *audioSession=[AVAudioSession sharedInstance];
        [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];

        NSLog(@"%@ %d",urlsArray,selectedIndex);

        NSString *sourcePath=[urlsArray objectAtIndex:selectedIndex];
        NSData *objectData=[NSData dataWithContentsOfURL:[NSURL URLWithString:sourcePath]];
        audioPlayer = [[AVAudioPlayer alloc] initWithData:objectData error:&err];

        if(err)
        {
            NSLog(@"Error %ld,%@",(long)err.code,err.localizedDescription);
        }

        NSTimeInterval bufferDuration=0.005;
        [audioSession setPreferredIOBufferDuration:bufferDuration error:&err];

        if(err)
        {
            NSLog(@"Error %ld, %@", (long)err.code, err.localizedDescription);
        }

        double sampleRate = 44100.0;
        [audioSession setPreferredSampleRate:sampleRate error:&err];

        if(err)
        {
            NSLog(@"Error %ld, %@",(long)err.code,err.localizedDescription);
        }

        [audioSession setActive:YES error:&err];

        if(err)
        {
            NSLog(@"Error %ld,%@", (long)err.code, err.localizedDescription);
        }

        sampRate=audioSession.sampleRate;
        bufferDuration=audioSession.IOBufferDuration;

        NSLog(@"SampeRate:%0.0fHZI/OBufferDuration:%f",sampleRate,bufferDuration);

        audioPlayer.numberOfLoops = 0;
        [audioPlayer prepareToPlay];
        audioPlayer.delegate=self;

        if(!audioPlayer.playing)
        {
            [audioPlayer play];
        }

        playing=YES;
    }
    else if (playing==YES)
    {
        [playButton setBackgroundImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
        [audioPlayer pause];
        playing=NO;
    }

    if (self.audioPlayer)
    {
        [self updateViewForPlayerInfo];
        [self updateViewForPlayerState];
        [self.audioPlayer setDelegate:self];
    }
}

使用活动指示器显示加载过程,将活动指示器连接到IBOutlet并在h文件和类似的代码中进行合成

在m文件中这样声明

   @interface updatepoliticalViewController : UIViewController 
  {
      UIActivityIndicatorView *spinner;
    }

并将微调框合成到您的文件中

    -(void)temp
 {
       spinner = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

       spinner.frame = CGRectMake(0.0, 0.0, 40.0, 40.0);
       [spinner setCenter:CGPointMake(160, 240)];
       [self.view addSubview:spinner];
       spinner.color = [UIColor blueColor];
       spinner.backgroundColor = [UIColor colorWithWhite:0.2 alpha:0.4];
       [spinner startAnimating];
       [spinner release];
  }

使用此方法停止活动

-(void) myMethod{
   [spinner stopAnimating];
   spinner.hidden = YES;

 }

在didload视图中调用此函数,并指定要显示加载过程的时间

- (void)viewDidLoad
 {
     [super viewDidLoad];
     [self temp];
     [self performSelector:@selector(myMethod) withObject:nil afterDelay:5.0f];
 }

希望对您有帮助

在开始实施之前,首先要了解活动指示器的概念。 那对我们是好的态度。

http://www.ioscreator.com/tutorials/display-an-activity-indicator

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM