您的位置:首页 > 移动开发 > IOS开发

iOS Core Animation (本人写的源码)

2015-12-28 10:39 337 查看
//

// ViewController.h

// Animation_byEpisode

//

// Created by Wangyun on 15/7/9.

// Copyright (c) 2015年 com.epsiode. All rights reserved.

//

#import <UIKit/UIKit.h>

@interface ViewController :
UIViewController

@end

// ViewController.m

// Animation_byEpisode

//

// Created by Wangyun on 15/7/9.

// Copyright (c) 2015年 com.epsiode. All rights reserved.

//

#import "ViewController.h"

#import "SecondViewController.h"

NSString * const string =
@"123";

@interface
ViewController ()

@property (strong,
nonatomic) IBOutlet
UIImageView *imageView;

@property (strong,
nonatomic) IBOutlet
UIImageView *colorImageView;

@property(nonatomic,retain)
SecondViewController *secondVC;

@end

@implementation ViewController

- (void)viewDidLoad {

[super
viewDidLoad];

self.imageView.image=[UIImage
imageNamed:@"10042637.jpg"];

self.imageView.layer.cornerRadius=20;

self.imageView.layer.borderWidth=2;

self.imageView.layer.borderColor=[UIColor
greenColor].CGColor;

self.imageView.layer.shadowColor=[[UIColor
blueColor]
CGColor];

self.imageView.layer.shadowOffset=CGSizeMake(20,
20);

self.imageView.layer.shadowOpacity=0.5;

[self.imageView
setClipsToBounds:YES];

//超过主层边框范围的内容都裁剪

self.imageView.layer.masksToBounds=NO;

//[self testImageView];

self.colorImageView.backgroundColor=[UIColor
purpleColor];

self.colorImageView.layer.cornerRadius=20;

self.colorImageView.layer.borderWidth=2;

self.colorImageView.layer.borderColor=[UIColor
greenColor].CGColor;

self.colorImageView.layer.shadowColor=[[UIColor
yellowColor]
CGColor];

self.colorImageView.layer.shadowOffset=CGSizeMake(20,
20);

self.colorImageView.layer.shadowOpacity=0.5;

[self.colorImageView
setClipsToBounds:YES];

self.colorImageView.layer.masksToBounds=NO;

self.secondVC=[self.storyboard
instantiateViewControllerWithIdentifier:@"secondVC"];

}

-(void)testImageView{

//[self.imageView.layer setValue:@(M_PI_4) forKeyPath:@"transform.rotation"];

// NSValue *value=[NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4, 0, 0, 1)];

// [self.imageView.layer setValue:value forKeyPath:@"transform"];

//[self.imageView.layer setValue:[NSValue valueWithCATransform3D:CATransform3DMakeRotation(M_PI_4, 0, 0, 1)] forKeyPath:@"transform"];

// [self.imageView.layer setValue:[NSNumber numberWithFloat:0.5] forKeyPath:@"transform.scale.y"];

[self.imageView.layer
setValue:@(0.5)
forKeyPath:@"transform.scale.y"];

}

//UIView动画的动画块方法

- (IBAction)propertyAnimation:(UIButton *)sender {

[UIView
beginAnimations:@"AnimationOne"
context:nil];

[UIView
setAnimationDuration:1];

[UIView
setAnimationRepeatCount:2];

//[UIView setAnimationDelegate:self];
这个有什么用??

self.colorImageView.bounds=CGRectMake(120,
80, 100,
100);

self.colorImageView.layer.cornerRadius=50;

self.colorImageView.transform=CGAffineTransformMakeRotation(M_PI);

[UIView
commitAnimations];

}

//UIView动画的block方法

- (IBAction)blockAnimation:(UIButton *)sender {

[UIView
animateWithDuration:1
delay:1
options:UIViewAnimationOptionTransitionFlipFromBottom
animations:^{

self.colorImageView.bounds=CGRectMake(0,
0, 200,
200);

self.colorImageView.transform=CGAffineTransformMakeRotation(2*M_PI);

} completion:^(BOOL finished) {

}];

}

- (IBAction)transmitAnimation:(UIButton *)sender {

UIView *view=self.view.superview;

[UIView
beginAnimations:@"transmit"
context:nil];

[UIView
setAnimationDuration:3];

[UIView
setAnimationTransition:UIViewAnimationTransitionCurlUp
forView:self.view.superview
cache:YES];

[self.view
removeFromSuperview];

[view addSubview:self.secondVC.view];

[UIView
commitAnimations];

}

//UIViewTransition的API方法

- (IBAction)blockTransmitAnimation:(UIButton *)sender {

[UIView
transitionFromView:self.view
toView:self.secondVC.view
duration:1
options:UIViewAnimationOptionTransitionCurlUp
completion:^(BOOL finished) {

}];

UIView *view=self.view.superview;

[UIView
transitionWithView:view duration:1
options:UIViewAnimationOptionTransitionCurlUp
animations:^{

[self.view
removeFromSuperview];

[view addSubview:self.secondVC.view];

} completion:^(BOOL finished) {

}];

}

//CAAnimation是抽象类,CAPropertyAnimation-->CABasicAnimation

- (IBAction)basicAnimation:(UIButton *)sender {

CABasicAnimation *basicAnimation=[CABasicAnimation
animationWithKeyPath:@"backgroundColor"];

basicAnimation.duration=6;

basicAnimation.fromValue = (__bridge
id)([[UIColor
redColor] CGColor]);

basicAnimation.toValue = (__bridge
id)([[UIColor
purpleColor] CGColor]);

// basicAnimation.fromValue = [NSNumber numberWithFloat:0.5];

// basicAnimation.byValue = [NSNumber numberWithFloat:0.2];

[self.colorImageView.layer
addAnimation:basicAnimation
forKey:@"haha"];

self.colorImageView.backgroundColor=[UIColor
yellowColor];

}

//CAAnimation是抽象类,CAPropertyAnimation-->CAKeyFrameAnimation

- (IBAction)keyFrameAnimation:(UIButton *)sender {

CAKeyframeAnimation *keyFrameAnimation=[CAKeyframeAnimation
animationWithKeyPath:@"position.x"];

CGFloat center=self.colorImageView.layer.position.x;

CGFloat left=center-20;

CGFloat right=center+20;

NSNumber *c=[NSNumber
numberWithFloat:center];

NSNumber *l=[NSNumber
numberWithFloat:left];

NSNumber *r=[NSNumber
numberWithFloat:right];

keyFrameAnimation.values=@[c,r,l,c,l,r,c,r,l,r,c,l];

[self.colorImageView.layer
addAnimation:keyFrameAnimation
forKey:@"shake"];

}

//CATransition,作⽤:layer的过渡动画

//有两个主要属性:type(设置过渡动画的效果)和subType(设置过渡
动画的⽅方向)

- (IBAction)coreAnimation:(UIButton *)sender {

CATransition *transition=[CATransition
animation];

transition.duration=3;

transition.startProgress=0.5;

transition.type=@"cube";

transition.subtype=kCATransitionFromLeft;

UIView *view =
self.view.superview;

[view.layer addAnimation:transition
forKey:@"过渡"];

[self.view
removeFromSuperview];

[view addSubview:self.secondVC.view];

}

//CAAnimation是抽象类,CAAnimationGroup-->CAAnimationGroup只有⼀一个数组属性,可以添加多个
CAAnimation,⼀一起执⾏行

- (IBAction)groupAnimation:(UIButton *)sender {

CAAnimationGroup *groupAnimation=[CAAnimationGroup
animation];

CABasicAnimation *basicAnimation=[CABasicAnimation
animationWithKeyPath:@"position"];

basicAnimation.fromValue=[NSValue
valueWithCGPoint:self.colorImageView.layer.position];

basicAnimation.toValue=[NSValue
valueWithCGPoint:CGPointMake(50,
300)];

CABasicAnimation *basicAnimation1=[CABasicAnimation
animationWithKeyPath:@"color"];

basicAnimation1.fromValue = (__bridge
id)([[UIColor
redColor] CGColor]);

basicAnimation1.toValue = (__bridge
id)([[UIColor
purpleColor] CGColor]);

groupAnimation.duration=3;

groupAnimation.animations=@[basicAnimation,basicAnimation1];

[self.colorImageView.layer
addAnimation:groupAnimation
forKey:@"2"];

}

- (void)didReceiveMemoryWarning {

[super
didReceiveMemoryWarning];

// Dispose of any resources that can be recreated.

}

@end

// FirstViewController.h

// Animation_byEpisode

//

// Created by Wangyun on 15/7/9.

// Copyright (c) 2015年 com.epsiode. All rights reserved.

//

#import <UIKit/UIKit.h>

@interface FirstViewController :
UIViewController

@end

// FirstViewController.m

// Animation_byEpisode

//

// Created by Wangyun on 15/7/9.

// Copyright (c) 2015年 com.epsiode. All rights reserved.

//

#import "FirstViewController.h"

#import "Macro.h"

#import "ViewController.h"

@interface
FirstViewController ()

@end

@implementation FirstViewController

- (void)viewDidLoad {

[super
viewDidLoad];

[self
bootAnimation];

}

-(void)bootAnimation{

UIImageView *bootImageView=[[UIImageView
alloc]
initWithFrame:[UIScreen
mainScreen].bounds];

bootImageView.image=[UIImage
imageNamed:@"zhiyan"];

[self.view
addSubview:bootImageView];

[UIView
animateWithDuration:3
delay:0
options:UIViewAnimationOptionOverrideInheritedDuration
animations:^{

bootImageView.frame=CGRectMake(-30, -50,
kScreen_Width+60,
kScreen_Height+100);

} completion:^(BOOL finished) {

[bootImageView removeFromSuperview];

ViewController *viewC=[self.storyboard
instantiateViewControllerWithIdentifier:@"viewVC"];

//[self.view removeFromSuperview];

[self.view
addSubview:viewC.view];

}];

}

- (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

//

// SecondViewController.h

// Animation_byEpisode

//

// Created by Wangyun on 15/7/9.

// Copyright (c) 2015年 com.epsiode. All rights reserved.

//

#import <UIKit/UIKit.h>

extern NSString *
const string;

@interface SecondViewController :
UIViewController

@end

// SecondViewController.m

// Animation_byEpisode

//

// Created by Wangyun on 15/7/9.

// Copyright (c) 2015年 com.epsiode. All rights reserved.

//

#import "SecondViewController.h"

#import "ViewController.h"

@interface
SecondViewController ()

@property(nonatomic,retain)
ViewController *viewController;

@end

@implementation SecondViewController

- (void)viewDidLoad {

[super
viewDidLoad];

NSLog(@"string :%@",string);

_viewController=[self.storyboard
instantiateViewControllerWithIdentifier:@"viewVC"];

}

- (IBAction)swiftBack:(UIButton *)sender {

[UIView
transitionFromView:self.view
toView:self.viewController.view
duration:1
options:UIViewAnimationOptionTransitionCurlDown
completion:^(BOOL finished) {

}];

UIView *view=self.view.superview;

[UIView
transitionWithView:view duration:1
options:UIViewAnimationOptionTransitionCurlDown
animations:^{

[self.view
removeFromSuperview];

[view addSubview:self.viewController.view];

} completion:^(BOOL finished) {

}];

}

- (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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: