音乐播放器+三基色调色+动画播放

AppDelegate.h

#import <UIKit/UIKit.h>

@interface AppDelegate : UIResponder <UIApplicationDelegate>

@property (strong, nonatomic) UIWindow *window;


@end

AppDelegate.m

#import "AppDelegate.h"
#import "RootViewController.h"

@interface AppDelegate ()

@end

@implementation AppDelegate
- (void)dealloc
{
    [_window release];
    [super dealloc];
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];
    [_window release];

    RootViewController *rootVC = [[RootViewController alloc] init];
    self.window.rootViewController = rootVC;
    [rootVC release];

    return YES;
}

RootViewController.h

#import <UIKit/UIKit.h>

typedef NS_ENUM(NSUInteger, NSBackGround) {
    NSRed,
    NSGreen,
    NSBlue,
};

@interface RootViewController : UIViewController

@end

RootViewController.m

#import "RootViewController.h"
#import <AVFoundation/AVFoundation.h>

@interface RootViewController ()

@property(nonatomic, retain)UIStepper *stepper;
@property(nonatomic, retain)UIImageView *imageView;
@property(nonatomic, retain)AVAudioPlayer *player;
@property(nonatomic, retain)UIButton *beginButton;
@property(nonatomic, retain)UIProgressView *playerProgressView;
@property(nonatomic, retain)UISlider *playerSlider;
@property(nonatomic, retain)UISegmentedControl *segment;
@property(nonatomic, retain)UIImage *image;
@property(nonatomic, retain)UISlider *redSlider;
@property(nonatomic, retain)UISlider *greenSlider;
@property(nonatomic, retain)UISlider *blueSlider;
@property(nonatomic, retain)UISlider *alphaSlider;
@property(nonatomic, retain)UIImageView *rotaryImageView;
@property(nonatomic, retain)NSTimer *timer;
@property(nonatomic, retain)UIRotationGestureRecognizer *rotation;

@end

@implementation RootViewController

- (void)dealloc
{
    [_rotation release];
    [_timer release];
    [_rotaryImageView release];
    [_alphaSlider release];
    [_redSlider release];
    [_greenSlider release];
    [_blueSlider release];
    [_segment release];
    [_playerSlider release];
    [_playerProgressView release];
    [_beginButton release];
    [_player release];
    [_stepper release];
    [_imageView release];
    [super dealloc];
}

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.

    self.view.backgroundColor = [UIColor whiteColor];
#pragma mark    set the stepper
    self.stepper = [[UIStepper alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
    [self.view addSubview:self.stepper];
    [self.stepper release];
    self.stepper.value = 0;
    self.stepper.stepValue = 2;
    self.stepper.minimumValue = 0;
    self.stepper.maximumValue = 100;
    self.stepper.layer.borderWidth = 1;
    //  connect the player volume to the stepper's value
    [self.stepper addTarget:self action:@selector(stepperAction:) forControlEvents:UIControlEventValueChanged];
//    self.stepper.layer.cornerRadius = 10;
#pragma mark    set the audio file and function
    //  set the audio file path
    NSString *path = [[NSBundle mainBundle] pathForResource:@"吴琼 - 故人叹" ofType:@"mp3"];
    self.player = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:nil];
    [self.player prepareToPlay];
    self.player.numberOfLoops = NSIntegerMax;
    NSLog(@"%.2f", self.player.duration);
#pragma mark    player begin button
    self.beginButton = [UIButton buttonWithType:UIButtonTypeSystem];
    [self.view addSubview:self.beginButton];
    [self.beginButton release];
    self.beginButton.frame = CGRectMake(150, 20, 50, 30);
    [self.beginButton setTitle:@"开始" forState:UIControlStateNormal];
    self.beginButton.layer.borderWidth = 1;
    //  begin button function
    [self.beginButton addTarget:self action:@selector(beginButton:) forControlEvents:UIControlEventTouchUpInside];
    self.beginButton.layer.cornerRadius = 10;
#pragma mark    progressView of audio player
    self.playerProgressView = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault];
    [self.view addSubview:self.playerProgressView];
    [self.playerProgressView release];
    self.playerProgressView.frame = CGRectMake(210, 20, 100, 10);
    [self.playerProgressView sizeToFit];
#pragma mark    audio slider
    self.playerSlider = [[UISlider alloc] initWithFrame:CGRectMake(210, 50, 150, 10)];
    [self.view addSubview:self.playerSlider];
    [self.playerSlider release];
    self.playerSlider.layer.borderWidth = 1;
    self.playerSlider.layer.borderColor = [UIColor purpleColor].CGColor;
    [self.playerSlider sizeToFit];
    self.playerSlider.maximumValue = self.player.duration;
//    NSLog(@"~~%.2f", self.playerSlider.maximumValue);
    [self.playerSlider addTarget:self action:@selector(sliderDrag:) forControlEvents:UIControlEventTouchDragInside];

#pragma mark    segmentControl
    self.segment = [[UISegmentedControl alloc] initWithItems:@[@"红", @"绿", @"蓝"]];
    [self.view addSubview:self.segment];
    [self.segment release];
    self.segment.frame = CGRectMake(130, 300, 100, 30);
    [self.segment addTarget:self action:@selector(segAction:) forControlEvents:UIControlEventValueChanged];
#pragma mark    imageView
    self.imageView = [[UIImageView alloc] initWithFrame:CGRectMake(100, 350, 200, 200)];
    [self.view addSubview:self.imageView];
    [self.imageView release];
    self.imageView.layer.borderWidth = 1;
#pragma mark    color modulation slider
    //  red slider
    self.redSlider =[[UISlider alloc] initWithFrame:CGRectMake(210, 170, 150, 30)];
    [self.view addSubview:self.redSlider];
    [self.redSlider release];
    //  green slider
    self.greenSlider = [[UISlider alloc] initWithFrame:CGRectMake(210, 200, 150, 30)];
    [self.view addSubview:self.greenSlider];
    [self.greenSlider release];
    //  blue slider
    self.blueSlider = [[UISlider alloc] initWithFrame:CGRectMake(210, 230, 150, 30)];
    [self.view addSubview:self.blueSlider];
    [self.blueSlider release];
    //  alpha slider
    self.alphaSlider = [[UISlider alloc] initWithFrame:CGRectMake(210, 130, 150, 30)];
    [self.view addSubview:self.alphaSlider];
    [self.alphaSlider release];
    //  modulate color
    [self.alphaSlider addTarget:self action:@selector(colorModulationAction:) forControlEvents:UIControlEventTouchDragEnter];
    [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(colorModulationAction:) userInfo:nil repeats:YES];
    self.alphaSlider.value = 1;
#pragma mark    rotate image
    self.rotaryImageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 100, 200, 200)];
    [self.view addSubview:self.rotaryImageView];
    [self.rotaryImageView release];
    self.rotaryImageView.clipsToBounds = YES;
    self.rotaryImageView.layer.cornerRadius = self.rotaryImageView.frame.size.width / 2;
    self.image = [UIImage imageNamed:@"Audrey.jpg"];
    self.rotaryImageView.layer.borderWidth  = 1;
    self.rotaryImageView.image = self.image;

    self.rotation = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(rotationImageView:)];
    [self.view addGestureRecognizer:self.rotation];
    [self.rotation release];
    self.view.userInteractionEnabled = YES;



}

- (void)rotationImageView:(UIRotationGestureRecognizer *)rotation {
    rotation.view.transform = CGAffineTransformRotate(rotation.view.transform, rotation.rotation);
    rotation.rotation = 0;
}



- (void)colorModulationAction:(UISlider *)slider {
    //  set the alpha slider
    self.alphaSlider.maximumValue = 1;
    self.alphaSlider.minimumValue = 0;
    self.view.alpha = self.alphaSlider.alpha;
    //  set the red color slider
    self.redSlider.minimumValue = 0;
    self.redSlider.maximumValue = 1;
    //  set the green color slider
    self.greenSlider.minimumValue = 0;
    self.greenSlider.maximumValue = 1;
    //  set the blue color slider
    self.blueSlider.minimumValue = 0;
    self.blueSlider.maximumValue = 1;

    self.view.backgroundColor = [UIColor colorWithRed:self.redSlider.value green:self.greenSlider.value blue:self.blueSlider.value alpha:self.alphaSlider.value];
}

- (void)segAction:(UISegmentedControl *)segment {
    switch (self.segment.selectedSegmentIndex) {
        case NSRed:{
            self.view.backgroundColor = [UIColor redColor];
            NSMutableArray *pictureArray = [NSMutableArray array];
            for (NSInteger i = 0; i < 80; i++) {
                NSString *imageName = [NSString stringWithFormat:@"drink_%02ld.jpg", i];
                self.image = [UIImage imageNamed:imageName];
                [pictureArray addObject:self.image];
            }
            self.imageView.animationImages = pictureArray;
            self.imageView.animationDuration = 3;
            self.imageView.animationRepeatCount = NSIntegerMax;
            [self.imageView startAnimating];
        } break;
        case NSGreen:{
            self.view.backgroundColor = [UIColor greenColor];
            NSMutableArray *pictureArray = [NSMutableArray array];
            for (NSInteger i = 0; i < 55; i++) {
                NSString *imageName = [NSString stringWithFormat:@"scratch_%02ld.jpg", i];
                self.image = [UIImage imageNamed:imageName];
                [pictureArray addObject:self.image];
            }
            self.imageView.animationImages = pictureArray;
            self.imageView.animationDuration = 2;
            self.imageView.animationRepeatCount = NSIntegerMax;
            [self.imageView startAnimating];

        } break;
        case NSBlue:{
            self.view.backgroundColor = [UIColor blackColor];
            NSMutableArray *pictureArray = [NSMutableArray array];
            for (NSInteger i = 0; i < 23; i++) {
                NSString *imageName = [NSString stringWithFormat:@"pie_%02ld.jpg", i];
                self.image = [UIImage imageNamed:imageName];
                [pictureArray addObject:self.image];
            }
            self.imageView.animationImages = pictureArray;
            self.imageView.animationDuration = 1;
            self.imageView.animationRepeatCount = NSIntegerMax;
            [self.imageView startAnimating];

        } break;

        default:
            break;
    }
}

- (void)sliderDrag:(UISlider *)sliderClick {
    self.player.currentTime = self.playerSlider.value;
}

- (void)beginButton:(UIButton *)button {
    NSLog(@"%.2f", self.player.currentTime);
    //  rotate imageView
    if ([self.beginButton.currentTitle isEqualToString:@"开始"]) {
        [self.player play];

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


        [self.beginButton setTitle:@"暂停" forState:UIControlStateNormal];

        [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(changeProgress:) userInfo:nil repeats:YES];
        [NSTimer scheduledTimerWithTimeInterval:0.1 target:self selector:@selector(changeSlider:) userInfo:nil repeats:YES];
    } else {
        [self.beginButton setTitle:@"开始" forState:UIControlStateNormal];
        [self.player pause];
        [self.timer invalidate];
    }
}
//  control the imageView rotate angle
- (void)rotateImage:(UIRotationGestureRecognizer *)sender {
    self.rotaryImageView.transform = CGAffineTransformRotate(self.rotaryImageView.transform, 3.14 / 100);

}

- (void)changeSlider:(UISlider *)slider {


    self.playerSlider.value = self.player.currentTime;
    if (self.playerSlider.value == self.player.duration) {
        self.playerSlider.value = 0;
    }
}

- (void)changeProgress:(UIProgressView *)sender {
    self.playerProgressView.progress = self.player.currentTime / self.player.duration;
    if (self.player.currentTime == self.player.duration) {
        self.playerProgressView.progress = 0;
    }
}

- (void)stepperAction:(UIStepper *)stepper {
    self.player.volume = self.stepper.value;

}

- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值