你的位置:首页 > 操作系统

[操作系统]【代码笔记】看图听故事


一,效果图。

二,工程图。

三,代码。

RootViewController.h

复制代码
#import <UIKit/UIKit.h>#import <AVFoundation/AVFoundation.h>@interface RootViewController : UIViewController<AVAudioPlayerDelegate,UIImagePickerControllerDelegate,UINavigationControllerDelegate>{  UIImageView * backImageView;  AVAudioPlayer *_audioPlayer;  NSMutableArray *musicArray;  NSMutableArray *titleArray;    int songIndex;  UIButton * leftButton;  UIButton * rightButton;    UILabel *titleLabel;  UISlider *Slider;  UISlider *volumeSlider;  NSTimer * processTimer;  NSTimer * timer1;  }@end
复制代码

 

RootViewController.m

复制代码
#import "RootViewController.h"@interface RootViewController ()@end@implementation RootViewController- (void)viewDidLoad{  [super viewDidLoad];    self.title = @"故事";  //初始化数据  [self initData];  //初始化背景图  [self initBackgroundView];  }#pragma -mark -functions//初始化数据-(void)initData{  musicArray=[[NSMutableArray alloc]initWithObjects:@"7",@"11",@"9",@"17",@"5",@"6",@"1",@"8",@"15",@"10",@"2",@"12",@"13",@"14",@"4",@"16",@"3",@"18", nil];  titleArray=[[NSMutableArray alloc]initWithObjects:@"三头公牛和狮子",@"小红帽",@"天女散花",@"朋友再见",@"女娲造人",@"天神的哑水",@"小青蛙听故事",@"淘淘的愿望",@"讲礼貌",@"丑小鸭",@"老鼠,小鸟和香肠",@"两头驴子",@"驴子和主人",@"四个朋友",@"奖品",@"没法通过",@"五颗豌豆",@"彼得*潘", nil];  }//初始化背景图-(void)initBackgroundView{    self.navigationController.navigationBar.tintColor =[UIColor orangeColor];  self.navigationController.navigationBar.tintColor = [UIColor colorWithRed:69.0/255 green:161.0/255 blue:241.0/255 alpha:1];      //背景  backImageView= [[UIImageView alloc] initWithFrame: CGRectMake(0, 0, 320, 460)];  backImageView.image= [UIImage imageNamed:[NSString stringWithFormat:@"%@.jpg",[musicArray objectAtIndex:songIndex]]];  [self.view addSubview:backImageView];      //播放  UIButton* button= [UIButton buttonWithType:UIButtonTypeCustom];  button.frame=CGRectMake(130, 260, 60, 50);  button.tag=100;  [button addTarget:self action:@selector(play:) forControlEvents:UIControlEventTouchUpInside];  [button setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];  [self.view addSubview:button];    //上一首  leftButton= [UIButton buttonWithType:UIButtonTypeCustom];  leftButton.frame=CGRectMake(50, 260, 60, 50);  [leftButton addTarget:self action:@selector(prier) forControlEvents:UIControlEventTouchUpInside];  [leftButton setImage:[UIImage imageNamed:@"left.png"] forState:UIControlStateNormal];  [self.view addSubview:leftButton];    //下一首  rightButton= [UIButton buttonWithType:UIButtonTypeCustom];  rightButton.frame=CGRectMake(210, 260, 60, 50);  [rightButton addTarget:self action:@selector(next) forControlEvents:UIControlEventTouchUpInside];  [rightButton setImage:[UIImage imageNamed:@"right.png"] forState:UIControlStateNormal];  [self.view addSubview:rightButton];    //音量按钮  UIButton *volumebutton= [UIButton buttonWithType:UIButtonTypeCustom];  volumebutton.frame=CGRectMake(10, 330, 40, 40);  [volumebutton setImage:[UIImage imageNamed:@"labalan.png"] forState:UIControlStateNormal];  [volumebutton addTarget:self action:@selector(showVolume) forControlEvents:UIControlEventTouchUpInside];  [self.view addSubview:volumebutton];    //背景  UIButton *backButton= [UIButton buttonWithType:UIButtonTypeCustom];  backButton.frame=CGRectMake(270, 330, 40, 40);  [backButton setImage:[UIImage imageNamed:@"apple.png"] forState:UIControlStateNormal];  [backButton addTarget:self action:@selector(setBackground) forControlEvents:UIControlEventTouchUpInside];  [self.view addSubview:backButton];      //音乐logo图片  UIImageView* musicImageView= [[UIImageView alloc] initWithImage: [UIImage imageNamed:@"musicLogo.png"]];  musicImageView.frame= CGRectMake(80, 40, 160, 140);  [self.view addSubview:musicImageView];      //标题  titleLabel= [[UILabel alloc] initWithFrame:CGRectMake(0, 195, 320, 30)];  titleLabel.font= [UIFont systemFontOfSize:25];  titleLabel.textAlignment= NSTextAlignmentCenter;  titleLabel.textColor= [UIColor blueColor];  titleLabel.numberOfLines=0;  titleLabel.backgroundColor= [UIColor clearColor];  titleLabel.text= [titleArray objectAtIndex:0];  [self.view addSubview:titleLabel];      //进度控制  Slider= [[UISlider alloc] initWithFrame:CGRectMake(50, 230, 220, 5)];  Slider.maximumValue=100;  Slider.minimumValue=0;  Slider.value=0;  Slider.continuous=NO;  [Slider addTarget:self action:@selector(processSet:) forControlEvents:UIControlEventValueChanged];  [Slider addTarget:self action:@selector(processTimerStop) forControlEvents:UIControlEventTouchDown];  [self.view addSubview:Slider];    //音量控制  volumeSlider= [[UISlider alloc] initWithFrame:CGRectMake(-85, 280, 220, 5)];  volumeSlider.maximumValue=1;  volumeSlider.minimumValue=0;  volumeSlider.value= 0.5;  volumeSlider.hidden=YES;  [volumeSlider addTarget:self action:@selector(volumeSet:) forControlEvents:UIControlEventValueChanged];  volumeSlider.transform= CGAffineTransformMakeRotation(-90* M_PI/180);  [self.view addSubview:volumeSlider];     processTimer=[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(process) userInfo:nil repeats:YES];    [self loadMusic:[musicArray objectAtIndex:0] type:@"mp3"];      UILongPressGestureRecognizer* rightLongPress= [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(rightLongPress:)];  [rightButton addGestureRecognizer:rightLongPress];    UILongPressGestureRecognizer* leftLongPress= [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(leftLongPress:)];  [leftButton addGestureRecognizer:leftLongPress]; }//进度控制-(void)processSet:(UISlider*)slider{  processTimer=[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(process) userInfo:nil repeats:YES];  _audioPlayer.currentTime=slider.value/100*_audioPlayer.duration;  if(_audioPlayer.playing==YES)    [_audioPlayer playAtTime:_audioPlayer.currentTime];}-(void)processTimerStop{  [processTimer invalidate];}//背景-(void)setBackground{  UIImagePickerController* picker= [[UIImagePickerController alloc] init];  picker.sourceType= UIImagePickerControllerSourceTypeSavedPhotosAlbum;  picker.delegate=self;  [self presentViewController:picker animated:NO completion:nil];}#pragma -mark -doClickActions//右侧按钮手势-(void)rightLongPress:(UILongPressGestureRecognizer*)longPress{  if (longPress.state != UIGestureRecognizerStateBegan)    return;    if(_audioPlayer.playing)  {    if(_audioPlayer.currentTime>_audioPlayer.duration-5)      _audioPlayer.currentTime=_audioPlayer.currentTime;    else      _audioPlayer.currentTime+=5;    [_audioPlayer playAtTime:_audioPlayer.currentTime];      }}//左侧按钮手势-(void)leftLongPress:(UILongPressGestureRecognizer*)longPress{  if (longPress.state != UIGestureRecognizerStateBegan)    return;  if(_audioPlayer.playing)  {    if(_audioPlayer.currentTime<5)      _audioPlayer.currentTime=0;    else      _audioPlayer.currentTime-=5;        [_audioPlayer playAtTime:_audioPlayer.currentTime];        printf("left\n");  }}//雪花函数-(void)snow{  int startX= random()%320;  int endX= random()%320;  int width= random()%25;  CGFloat time= (random()%100)/10+5;  CGFloat alp= (random()%9)/10.0+0.1;    UIImage* image= [UIImage imageNamed:@"snow.png"];  UIImageView* imageView = [[UIImageView alloc] initWithImage:image];  imageView.frame= CGRectMake(startX,-1*width,width,width);  imageView.alpha=alp;  [self.view addSubview:imageView];    [UIView beginAnimations:nil context:(__bridge void *)(imageView)];  [UIView setAnimationDuration:time];  if(endX>50&&endX<270)  {    imageView.frame= CGRectMake(endX, 270-width/2, width, width);      }  else if((endX>10&&endX<50)||(endX>270&&endX<310))    imageView.frame= CGRectMake(endX, 400-width/2, width, width);  else    imageView.frame= CGRectMake(endX, 480, width, width);  [UIView setAnimationDidStopSelector:@selector(onAnimationComplete:finished:context:)];  [UIView setAnimationDelegate:self];  [UIView commitAnimations];}-(void)onAnimationComplete:(NSString*)animationID finished:(NSNumber*)finished context:(void*)context{  UIImageView* snowView=(__bridge UIImageView *)(context);  [snowView removeFromSuperview];  }//封装系统加载函数-(void)loadMusic:(NSString*)name type:(NSString*)type{  NSString* path= [[NSBundle mainBundle] pathForResource: name ofType:type];  NSURL* url = [NSURL fileURLWithPath:path];    _audioPlayer= [[AVAudioPlayer alloc] initWithContentsOfURL:url error:nil];  _audioPlayer.delegate=self;  _audioPlayer.volume= 0.5;  [_audioPlayer prepareToPlay];  }//音量设置-(void)volumeSet:(UISlider*)slider{  _audioPlayer.volume= slider.value;}-(void)showVolume{  volumeSlider.hidden=NO;  [NSTimer scheduledTimerWithTimeInterval:5.0 target:self selector:@selector(hideVolume) userInfo:nil repeats:NO];}-(void)hideVolume{  volumeSlider.hidden=YES;}//歌曲进度-(void)process{  Slider.value= 100*_audioPlayer.currentTime/_audioPlayer.duration;}#pragma -mark -doClickActions//播放-(void)play:(UIButton*)button{  if(_audioPlayer.playing)  {    [button setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];    [_audioPlayer pause];    [timer1 invalidate];  }  else  {    [button setImage:[UIImage imageNamed:@"stop.png"] forState:UIControlStateNormal];    timer1=[NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(snow) userInfo:nil repeats:YES];    [_audioPlayer play];  }  }//上一首-(void)prier{  BOOL playFlag;  if(_audioPlayer.playing)  {    playFlag=YES;    [_audioPlayer stop];  }  else  {    playFlag=NO;  }  songIndex--;  if(songIndex<0)    songIndex= musicArray.count-1    ;  [self loadMusic:[musicArray objectAtIndex:songIndex] type:@"mp3"];    UIImage * image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.jpg",[musicArray objectAtIndex:songIndex]]];    [self setBackground:image];  titleLabel.text= [titleArray objectAtIndex:songIndex];  if(playFlag==YES)  {    [_audioPlayer play];  }  }//下一首-(void)next{  BOOL playFlag;  if(_audioPlayer.playing)  {    playFlag=YES;    [_audioPlayer stop];  }  else{    playFlag=NO;  }  songIndex++;  if(songIndex==musicArray.count)  {    songIndex= 0;  }    [self loadMusic:[musicArray objectAtIndex:songIndex] type:@"mp3"];    UIImage * image = [UIImage imageNamed:[NSString stringWithFormat:@"%@.jpg",[musicArray objectAtIndex:songIndex]]];    [self setBackground:image];    titleLabel.text= [titleArray objectAtIndex:songIndex];  if(playFlag==YES)  {    [_audioPlayer play];      }}#pragma -mark -AVAudioPlayerDelegate//播放完成自动切换-(void)audioPlayerDidFinishPlaying:(AVAudioPlayer *)player successfully:(BOOL)flag{  songIndex++;  if(songIndex==musicArray.count)    songIndex= 0;  [self loadMusic:[musicArray objectAtIndex:songIndex] type:@"mp3"];  titleLabel.text= [titleArray objectAtIndex:songIndex];  [_audioPlayer play];  }#pragma -mark -UIImagePickerControllerDelegate-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker{  [self dismissViewControllerAnimated:YES completion:nil];}-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)image editingInfo:(NSDictionary *)editingInfo{  backImageView.image = image;  [self dismissViewControllerAnimated:YES completion:nil];}-(void)setBackground:(UIImage *)image{  backImageView.image = image;  }@end
复制代码