中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

iOS開發(fā)簡單的音頻播放器

2018-07-20    來源:編程學(xué)習(xí)網(wǎng)

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬Linux鏡像隨意使用

今天第一次接觸IOS開發(fā)的UI部分,之前學(xué)Objective-C的時(shí)候一直在模擬的使用Target-Action回調(diào)模式,今天算是真正的用了一次。為了熟悉一下基本控件的使用方法,和UI部分的回調(diào),下面開發(fā)了一個(gè)特別簡易的音頻播放器,來犒勞一下自己這一天的UI學(xué)習(xí)成果。在用到UI的控件時(shí)如果很好的理解之前博客在Objective-C中的Target-Action回調(diào)模式,感覺控件的用法會(huì)很順手。下面的簡易播放器沒有用到多高深的技術(shù),只是一些基本控件和View的使用。

話不多說簡單的介紹一下今天的音頻播放器。在播放器中我們用到了UIProgressView(進(jìn)度條)來顯示音頻的播放進(jìn)度,用UILabel顯示播放的當(dāng)前時(shí)間和總時(shí)間。用UIImageView和UIImagel來加入圖片,用UISegmentedControl來控制播放和暫停,用滑動(dòng)器UISlider來控制音頻的音量。上面的執(zhí)行組件都是UIKit中的組件,我們要定時(shí)的獲取音頻的播放時(shí)間,我們還要用到NSTimer來定時(shí)獲取CurrentTime。播放器怎么能少的了關(guān)鍵的組件呢,我們還需要引入框架AVFoundation.framework。我們會(huì)用到組件AVAudioPlayer來播放我們的音頻。

下面是簡易音頻播放器的截圖:

1.功能介紹:

點(diǎn)擊播放會(huì)播放默認(rèn)歌曲,同時(shí)顯示播放進(jìn)度和播放當(dāng)前時(shí)間,下面的slider可以調(diào)節(jié)音頻的聲音大小。

2.主要開發(fā)過程

1.在我們的XCode中新建一個(gè)SingleView的iPhone的工程,為了更好的理解和配置控件和view,就不使用storyboard來進(jìn)行控件的拖拽啦。在我們新建工程下面的ViewController.m編寫我們的代碼,為了隱藏我們音頻播放器使用的控件和控件回調(diào)的方法,我們?cè)赩iewController.m中用延展來對(duì)我們的組件和方法進(jìn)行聲明。代碼如下:

#import "ViewController.h"

@interface ViewController ()

//添加背景用的ImageView
@property (strong, nonatomic) UIImageView *backView;

//播放進(jìn)度條
@property (strong, nonatomic) UIProgressView *progress;

//選項(xiàng)卡按鈕,賦值播放和暫停
@property (strong, nonatomic) UISegmentedControl * segment;

//slider,用滑動(dòng)器來設(shè)置音量的大小
@property (strong, nonatomic) UISlider *slider;

//timer,來更新歌曲的當(dāng)前時(shí)間
@property (strong, nonatomic) NSTimer *timer;

//顯示時(shí)間的lable
@property (strong, nonatomic) UILabel *label;

//加入圖片,中間的圖片
@property (strong, nonatomic) UIImageView *imageView;

//聲明播放器,來播放我們的音頻文件
@property (strong, nonatomic) AVAudioPlayer *player;

//在暫停和播放時(shí)回調(diào)此按鈕
-(void)tapSegment;

//更新歌曲時(shí)間
-(void)time;

//改變聲音大小
-(void) changeVo;

@end

2.上面是我們的延展部分,來進(jìn)行我們的組件的聲明和方法的聲明,具體的實(shí)現(xiàn)就寫在本文件中的@implementation中,我們把組件的實(shí)現(xiàn)和配置寫在-(void) viewDidLoad;方法中,該方法會(huì)在主視圖加載完畢后執(zhí)行。在編寫實(shí)現(xiàn)代碼之前我們要把我們用到的媒體文件拖入到我們的Project中,下面是具體代碼的實(shí)現(xiàn)。

1).下面的代碼是為我們的應(yīng)用添加背景圖片,也就是我們上面圖片中的黑色背景圖片,在初始化ImageView的時(shí)候我們知道view的位置和大小CGRectMack(x, y, width, height); 用Image來通過圖片文件的名稱來載入我們的圖片,把圖片視圖插入到主視圖的最底層,同時(shí)設(shè)置其index來實(shí)現(xiàn),代碼如下。

/*添加背景圖片*/
//初始化ImageView,并設(shè)置大小
self.backView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, 320, 480)];
//加載圖片,我們的圖片名為background
UIImage *backImage = [UIImage imageNamed:@"background"];
//添加背景圖片到ImageView
self.backView.image = backImage;
//把ImageView添加到view的最底層
[self.view insertSubview:self.backView atIndex:0];

2).初始化我們的進(jìn)度條并設(shè)置進(jìn)度條的位置和大小,對(duì)進(jìn)度值初始化為零。同時(shí)把進(jìn)度條通過addSubView加入到我們的主視圖中

/*實(shí)例化進(jìn)度條,并添加到主視圖*/
self.progress = [[UIProgressView alloc] initWithFrame:CGRectMake(30, 60, 240, 10)];
[self.view addSubview:self.progress];
self.progress.progress = 0;

3).添加中間的圖片,和添加背景圖片相似,在這就不贅述了代碼如下:

//添加中間的圖片
  self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(80, 90, 160, 150)];
  UIImage *image = [UIImage imageNamed:@"image.png"];
  self.imageView.image = image;
  [self.view addSubview:self.imageView];

4).初始化我們的segment, 在初始化segment的同時(shí),我們通過便利初始化方法來指定有幾個(gè)按鍵和每個(gè)按鍵中的值。配置的時(shí)候我們可以通過tintColor來設(shè)置我們segment的顏色,通過Target-Action來注冊(cè)segment要回調(diào)的方法,同時(shí)指定回調(diào)的事件,我們?cè)O(shè)置的時(shí)UIControlEventValueChange,就是當(dāng)segment的selectedSegmentIndex改變時(shí),調(diào)用我們注冊(cè)的方法。代碼如下:

//添加segmentControl
self.segment = [[UISegmentedControl alloc] initWithItems:@[@"Play", @"Pause"]];
self.segment.frame = CGRectMake(110, 255, 100, 40);
self.segment.tintColor = [UIColor whiteColor];
//注冊(cè)回調(diào)方法,在segment的值改變的時(shí)候回調(diào)注冊(cè)的方法
[self.segment addTarget:self action:@selector(tapSegment) forControlEvents:UIControlEventValueChanged];
[self.view addSubview:self.segment];

5).下面的代碼是要初始化并配置我們的音頻播放器組件,配置的時(shí)候指定我們音頻所在路徑的url,并且回寫播放的錯(cuò)誤代碼如下

//配置播放器
NSBundle *bundle = [NSBundle mainBundle];
NSString * path = [bundle pathForResource:@"music" ofType:@"mp3"];
NSURL *musicURL = [NSURL fileURLWithPath:path];
NSError *error;
self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:musicURL error:&error];
if (self.player == nil) {
    NSLog(@"error = %@", [error localizedDescription]);
}

6).設(shè)置定時(shí)器,并注冊(cè)我們要間隔調(diào)用的方法。下面的定時(shí)器是1秒中重復(fù)調(diào)用我們當(dāng)前view中的time方法,在time方法中我們會(huì)獲取當(dāng)前音頻的當(dāng)前播放時(shí)間,并在lable中顯示,稍后會(huì)提到

//設(shè)置時(shí)間,每一秒鐘調(diào)用一次綁定的方法
self.timer = [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(time) userInfo:nil repeats:YES];

7).添加我們的音量控制組件,并綁定當(dāng)slider的值改變是調(diào)用哪一個(gè)方法。同時(shí)指定slider的最大值和最小值,代碼如下:

//添加slider
self.slider = [[UISlider alloc] initWithFrame:CGRectMake(100,300, 120 , 50)];
[self.slider addTarget:self action:@selector(changeVo) forControlEvents:UIControlEventValueChanged];

[self.view addSubview:self.slider];
//設(shè)置slider最小值和最大值
self.slider.minimumValue = 1;
self.slider.maximumValue = 10;

3.組件初始化和配置完畢,接下來我們就得實(shí)現(xiàn)各控件要回調(diào)的方法。

1).當(dāng)slider的值改變是我們要調(diào)用的方法如下,就是要設(shè)置一下音頻播放器的聲音,代碼如下:

//改變聲音
-(void)changeVo
{
    self.player.volume = self.slider.value;
}

2).定時(shí)器定時(shí)調(diào)用的方法如下,在此方法中我們要獲取音頻的總時(shí)間和當(dāng)前播放時(shí)間,并把秒轉(zhuǎn)換成分鐘(下面的代碼沒有使用NSDateFormat來轉(zhuǎn)換時(shí)間,讀者可以用自己的方法來轉(zhuǎn)換),轉(zhuǎn)換完以后在label中顯示當(dāng)前時(shí)間和總時(shí)間,代碼如下

//更新時(shí)間
-(void) time
{
    //獲取音頻的總時(shí)間
    NSTimeInterval totalTimer = self.player.duration;
    //獲取音頻的當(dāng)前時(shí)間
    NSTimeInterval currentTime = self.player.currentTime;
    //根據(jù)時(shí)間比設(shè)置進(jìn)度條的進(jìn)度
    self.progress.progress = (currentTime/totalTimer);

    //把秒轉(zhuǎn)換成分鐘
    NSTimeInterval currentM = currentTime/60;
    currentTime = (int)currentTime%60;

    NSTimeInterval totalM = totalTimer/60;
    totalTimer = (int)totalTimer%60;

    //把時(shí)間顯示在lable上
    NSString *timeString = [NSString stringWithFormat:@"%02.0f:%02.0f|%02.0f:%02.0f",currentM, currentTime, totalM,totalTimer];
    self.label.text = timeString;
}

3).下面是segment要回調(diào)的方法根據(jù)segment的selectedSegmentIndex來設(shè)置播放器的播放還是停止,代碼如下:

//segment所回調(diào)的方法
-(void) tapSegment
{
    int isOn = self.segment.selectedSegmentIndex;
    if (isOn == 0)
    {
        [self.player play];

    }
    else
    {
        [self.player pause];
    }

}

以上是整個(gè)簡易播放器的代碼,以為功能特別簡單所以代碼也不多。主要通過上面的簡易播放器來熟悉一下IOS開發(fā)中控件和view的使用流程,筆者也在一直學(xué)習(xí),水平有限,歡迎批評(píng)指正。

標(biāo)簽: 代碼 媒體

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:Java Servlet完全教程

下一篇:Java讀取大文件的高效率實(shí)現(xiàn)