·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> CoreAnimation核心动画一(一些常用属性和方法)

CoreAnimation核心动画一(一些常用属性和方法)

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23

1、常用属性:

 frame   bounds   center   alpha    Transition 过渡    transform 动画效果

2、常用方法:

 +(void)setAnimationDelegate:(id)delegate;

 +(void)setAnimationWillStartSelector:(SEL)selector; 当动画结束的时候,执行delegate对象的selector,并且把beginAnimations:context:中传入的参数传进selector

 + (void)setAnimationDidStopSelector:(SEL)selector;  当动画结束时,执行delegate对象的selector,并且把beginAnimations:context:中传入的参数传进selector

 

 + (void)setAnimationDuration:(NSTimeInterval)duration;   动画的持续时间,秒为单位

 

 + (void)setAnimationDelay:(NSTimeInterval)delay;  动画延迟delay秒后再开始

 

 + (void)setAnimationStartDate:(NSDate *)startDate;   动画的开始时间,默认为now

 

 + (void)setAnimationCurve:(UIViewAnimationCurve)curve;  动画的节奏控制(过渡)

 

 + (void)setAnimationRepeatCount:(float)repeatCount;  动画的重复次数

 

 + (void)setAnimationRepeatAutoreverses:(BOOL)repeatAutoreverses;  如果设置为YES,代表动画每次重复执行的效果会跟上一次相反

 

 + (void)setAnimationTransition:(UIViewAnimationTransition)transition forView:(UIView *)view cache:(BOOL)cache;  设置视图view的过渡效果, transition指定过渡类型, cache设置YES代表使用视图缓存,性能较好

 

  1 #import "ViewController.h"
  2 
  3 @interface ViewController ()
  4 {
  5     UIImageView *imageView;
  6 }
  7 @end
  8 
  9 @implementation ViewController
 10 
 11 - (void)viewDidLoad {
 12     [super viewDidLoad];
 13 
 14     imageView = [[UIImageView alloc]initWithFrame:self.view.frame];
 15     imageView.image = [UIImage imageNamed:@"7.jpg"];
 16 //    imageView.contentMode = UIViewContentModeScaleaspectFit;
 17     [self.view addSubview:imageView];
 18     
 19     UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
 20     button.frame = CGRectMake(0, 0, 100, 40);
 21     button.center = self.view.center;
 22     button.backgroundColor = [UIColor brownColor];
 23     [button addTarget:self action:@selector(viewAnimation3) forControlEvents:UIControlEventTouchUpInside];
 24     [self.view addSubview:button];
 25 
 26 
 27 }
 28 
 29 
 30 #PRagma mark -- 1、frame bounds center alpha ---
 31 - (void)viewAnimation1 {
 32 #pragma mark - 方法1
 33 //    在一段时间内 执行完命令
 34 //    [UIView animateWithDuration:3 animations:^{
 35 //        imageView.alpha = 0.5;
 36 //    }];
 37     
 38 #pragma mark - 方法2
 39 //  开始动画
 40     [UIView beginAnimations:@"animation" context:nil];
 41     
 42 //    这只动画的持续时间
 43     [UIView setAnimationDuration:3];
 44     
 45 //    ..... 动画效果
 46     imageView.alpha = 0.5;
 47     imageView.bounds = CGRectMake(0, 0, 100, 100);
 48     imageView.center = CGPointMake(50, 200);
 49 //    imageView.frame = CGRectMake(100, 100, 100, 100);
 50     
 51 //    提交动画  会去执行动画
 52     [UIView commitAnimations];
 53 }
 54 
 55 #pragma mark - 2、Transition
 56 /*
 57  typedef NS_ENUM(NSInteger, UIViewAnimationTransition) {
 58  UIViewAnimationTransitionNone,
 59  UIViewAnimationTransitionFlipFromLeft, 从左面翻转
 60  UIViewAnimationTransitionFlipFromRight,从右面翻转
 61  UIViewAnimationTransitionCurlUp, 向上翻页
 62  UIViewAnimationTransitionCurlDown,向下翻页
 63  };
 64  */
 65 - (void)viewAnimation2 {
 66 //    开始动画
 67     [UIView beginAnimations:nil context:nil];
 68 //    设置动画持续时间
 69 //    [UIView setAnimationDuration:3];
 70 //    设置 UIView 的过渡动画
 71     [UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:imageView cache:YES];
 72     
 73 #pragma mark - 3、UIViewAnimationCurve
 74     /*
 75      typedef NS_ENUM(NSInteger, UIViewAnimationCurve) {
 76      UIViewAnimationCurveEaseInOut,         // slow at beginning and end  慢进慢出
 77      UIViewAnimationCurveEaseIn,            // slow at beginning  快进
 78      UIViewAnimationCurveEaSEOut,           // slow at end  快出
 79      UIViewAnimationCurveLinear   匀速
 80      };
 81      */
 82     [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
 83 //    设置 代理(检测动画结束)
 84     [UIView setAnimationDelegate:self];
 85     [UIView setAnimationDidStopSelector:@selector(finishAnimation)];
 86 //    提交动画
 87     [UIView commitAnimations];
 88     
 89 }
 90 
 91 //  动画结束之后触发的方法
 92 - (void)finishAnimation {
 93     [UIView beginAnimations:@"o" context:nil];
 94     [UIView setAnimationDuration:3];
 95     imageView.alpha = 0.1;
 96     imageView.bounds = CGRectZero;
 97     imageView.center = CGPointMake(100, 100);
 98     
 99     [UIView commitAnimations];
100 }
101 
102 #pragma mark - 4、transform
103 /*
104  imageView.transform=CGAffineTransformScale(imageView.transform, 0.5, 0.5); // 实现的是放大和缩小imageView.transform=CGAffineTransformRotate(imageView.transform, M_PI_4); //实现的是旋转 imageView.transform=CGAffineTransformTranslate(imageView.transform, 20, 0); //实现的是平移
105  */
106 - (void)viewAnimation3 {
107     
108     [UIView beginAnimations:@"animation" context:nil];
109     [UIView setAnimationDuration:3];
110 //    transform 如果没有还原transform 他会保持 改变后的模样
111     imageView.transform = CGAffineTransformScale(imageView.transform, 0.5, 0.5);
112     
113     [UIView setAnimationDelegate:self];
114     [UIView setAnimationDidStopSelector:@selector(restore)];
115     [UIView commitAnimations];
116     
117 }
118 
119 - (void)restore {
120     [UIView animateWithDuration:3 animations:^{
121         imageView.transform = CGAffineTransformIdentity;
122 
123     }];
124 }

模拟器效果截图:

方法一效果图:

 

方法二效果图:

方法三效果图: