zoukankan      html  css  js  c++  java
  • iOS UI 20 音乐播放器

    //

    //  PlayerViewController.m

    //  UI - 20 音乐播放器

    //

    //  Created by dllo on 15/12/4.

    //  Copyright (c) 2015 dllo. All rights reserved.

    //


    #import "PlayerViewController.h"

    #import "STKAudioPlayer.h"

    @interface PlayerViewController ()

    @property (nonatomic, retain)STKAudioPlayer *player;

    @property (nonatomic, retain)UIButton *playB;

    @property (nonatomic, retain)UIButton *stopB;

    @property (nonatomic, retain)UISlider *vols;

    @property (nonatomic, retain)UISlider *voltime;

    @property (nonatomic, retain)NSTimer *timer;

    @end


    @implementation PlayerViewController


    - (void)dealloc

    {

        [_player release];

        [_playB release];

        [_stopB release];

        [_vols release];

        [_voltime release];

        [_timer release];

        [super dealloc];

    }

    + (instancetype)sharePlayerController

    {

        static PlayerViewController *playerVC = nil;

        if (nil == playerVC) {

            playerVC = [[PlayerViewController alloc] init];

        }

        return playerVC;

    }

    - (void)viewDidLoad {

        [super viewDidLoad];

        self.view.backgroundColor = [UIColor whiteColor];

        

        

        STKAudioPlayerOptions playerOption = {YES, YES,{50, 100, 200, 400, 800, 1600, 2600, 16000}};

        

        self.player = [[[STKAudioPlayer alloc]initWithOptions:playerOption]autorelease];

    //    [self.player play:@"http://fs.ios.kugou.com/201512031644/a7941f5512531bb51d94d55cf77a8197/G028/M07/0D/11/vIYBAFWKZeyARNFPAClMTjzD8N8315.mp3"];

        NSString *file = [[NSBundle mainBundle]pathForResource:@"陈势安 - 天后" ofType:@"MP3"

                          ];

        NSURL *url = [NSURL fileURLWithPath:file];

        [self.player playURL:url];

        

        

    //    [self.player play:@"陈势安 - 天后.mp3"];

        

        self.playB = [UIButton buttonWithType:UIButtonTypeCustom];

        self.playB.frame = CGRectMake(100, 100, 100, 30);

        [self.playB addTarget:self action:@selector(playBAct:) forControlEvents:UIControlEventTouchUpInside];

        self.playB.backgroundColor = [UIColor purpleColor];

        [self.playB setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

        self.player.volume = 10;

        [self.playB setTitle:@"播放" forState:UIControlStateNormal];

          [self.playB setTitle:@"暂停" forState:UIControlStateSelected];

        [self.view addSubview:self.playB];

        

        

        self.stopB = [UIButton buttonWithType:UIButtonTypeCustom];

        self.stopB.frame = CGRectMake(100, 300, 100, 30);

        [self.stopB addTarget:self action:@selector(stopBAct) forControlEvents:UIControlEventTouchUpInside];

        self.stopB.backgroundColor = [UIColor purpleColor];

        [self.stopB setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

        [self.stopB setTitle:@"停止" forState:UIControlStateNormal];

        [self.view addSubview:self.stopB];


        

        self.vols = [[UISlider alloc]initWithFrame:CGRectMake(100, 400, 300, 30)];

        self.vols.backgroundColor = [UIColor purpleColor];

        [self.vols addTarget:self action:@selector(slidAct) forControlEvents:UIControlEventValueChanged];

        self.vols.maximumValue = 50;

        [self.view addSubview:self.vols];

        [self.vols release];

        

        self.voltime = [[UISlider alloc]initWithFrame:CGRectMake(100, 500, 300, 30)];

        self.voltime.backgroundColor = [UIColor purpleColor];

        [self.voltime addTarget:self action:@selector(slidtimeAct) forControlEvents:UIControlEventValueChanged];

        self.voltime.maximumValue =169;

        [self.view addSubview:self.voltime];

        [self.voltime release];

        

        

        // Do any additional setup after loading the view.

    }

    - (void)playBAct:(UIButton *)sender

    {

        if (STKAudioPlayerStatePlaying == self.player.state) {

            //暂停

            [self.player pause];

            self.playB.selected = YES;

            

            

        } else  if(STKAudioPlayerStatePaused == self.player.state)  {

              //继续

            [self.player resume];

              self.playB.selected = NO;

        } else {

        //播放

    //    [self.player play:@"http://fs.ios.kugou.com/201512031644/a7941f5512531bb51d94d55cf77a8197/G028/M07/0D/11/vIYBAFWKZeyARNFPAClMTjzD8N8315.mp3"];

          

            self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(timeAct) userInfo:nil repeats:YES];

            

            

            

             self.playB.selected = NO;

        }

       

        

    }

    - (void)timeAct

    {

        NSLog(@"当前分钟:%ld, 当前秒:%ld", (NSInteger)self.player.progress / 60, (NSInteger)self.player.progress % 60);

        NSLog(@"总分钟:%ld, 总秒:%ld", (NSInteger)self.player.duration / 60, (NSInteger)self.player.duration % 60);

        

        //进度条更新

        

        self.voltime.value = self.player.progress;

        

    }

    - (void)stopBAct

    {

        //停止

        [self.player stop];

        self.playB.selected = NO;

        // 停止计时器

        [self.timer invalidate];

        self.timer = nil;

        

    }

    - (void)slidAct

    {

        //设置音量

        self.player.volume = self.vols.value;

    }


    - (void)slidtimeAct

    {

        //跳转时间

        [self.player seekToTime:self.voltime.value];

    }


    - (void)didReceiveMemoryWarning {

        [super didReceiveMemoryWarning];

        // Dispose of any resources that can be recreated.

    }


    /*

    #pragma mark - Navigation


    // In a storyboard-based application, you will often want to do a little preparation before navigation

    - (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {

        // Get the new view controller using [segue destinationViewController].

        // Pass the selected object to the new view controller.

    }

    */


    @end


  • 相关阅读:
    Vue.js 初尝试
    docker 搭建lnmp开发环境
    【转】【Salesfoece】在 Apex 中得到 sObject 的信息
    【转】【Salesfoece】Approval Process 在 Apex 中的使用
    【转】【Salesfoece】Apex 中 PageReference 的使用
    「codeforces
    「二次剩余」Tonelli
    「loj
    pytest---mock使用(pytest-mock)
    Django---setting文件详解
  • 原文地址:https://www.cnblogs.com/yuhaojishuboke/p/5043068.html
Copyright © 2011-2022 走看看