• 【代码笔记】iOS-看图听故事


    一,效果图。

    二,工程图。

    三,代码。

    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
    ");
        }
    }
    //雪花函数
    -(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
    复制代码

     

     

     
     
  • 相关阅读:
    B2. Cat Party (Hard Edition)
    Dubbo集群容错
    Dubbo负载均衡
    Dubbo多协议支持
    Dubbo服务分组
    Dubbo多版本控制
    Dubbo管控平台
    Dubbo应用到web工程
    Dubbo使用Zookeeper注册中心
    Dubbo直连方式
  • 原文地址:https://www.cnblogs.com/yang-guang-girl/p/5394039.html
Copyright © 2020-2023  润新知