iOS UI 21 动画



//

//  RootViewController.m

//  UI - 21 动画

//

//  Created by dllo on 15/12/8.

//  Copyright (c) 2015 dllo. All rights reserved.

//


#import "RootViewController.h"


@interface RootViewController ()

@property (nonatomic, retain)UIImageView *imagev;


@end


@implementation RootViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    self.view.backgroundColor = [UIColor whiteColor];

    

    self.imagev = [[UIImageView alloc]initWithFrame:CGRectMake(100, 100, 50, 50)];

    self.imagev.image =[UIImage imageNamed:@"Stars.png"];

    [self.view addSubview:self.imagev];

    [self.imagev release];

    

    

    UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom];

    //layer

    //阴影颜色

    button.layer.shadowColor = [[UIColor blackColor]CGColor];

    //阴影偏移

    button.layer.shadowOffset = CGSizeMake(2, 3);

    //阴影透明度

    button.layer.shadowOpacity = 0.5;

    //阴影透明度

    button.layer.shadowRadius = 0.5;

    //设置圆角 宽和高一样, 圆角设置为宽的一半

//    button.layer.cornerRadius = 25;

    

//    button.layer.masksToBounds = YES;

    //描边颜色

    button.layer.borderColor = [[UIColor yellowColor] CGColor];

    //描边宽度

    button.layer.borderWidth = 5;

    

    

    button.frame = CGRectMake(100, 300, 50, 50);

    button.backgroundColor = [UIColor redColor];

    [button addTarget:self action:@selector(buttonAct:) forControlEvents:UIControlEventTouchUpInside];

    [self.view addSubview:button];

    

    

    

    

    

    

    

    

    

    

    // Do any additional setup after loading the view.

}

- (void)buttonAct:(UIButton *)sender

{

//    [UIView animateWithDuration:1.f animations:^{

//        //延时

//        [UIView setAnimationDelay:1];

//        //速度曲线

//        [UIView setAnimationCurve:UIViewAnimationCurveEaseOut];

//        //动画反转

//        [UIView  setAnimationRepeatAutoreverses:YES];

//        //重复次数

//        [UIView setAnimationRepeatCount:3.0];

//        

//        

//        self.imagev.frame = CGRectMake(300, 500, 100, 100);

//    }];

    

    

//    [UIView animateWithDuration:1.f animations:^{

//        

//        self.imagev.frame = CGRectMake(300, 500, 100, 100);

//

//    } completion:^(BOOL finished) {

//        //动画完成后可以加一些处理

//         self.imagev.frame = CGRectMake(0, 0, 100, 100);

//    }];

    

//    [UIView animateWithDuration:1.0f delay:1.0 options:    UIViewAnimationOptionCurveEaseInOut animations:^{

//        

//        self.imagev.frame = CGRectMake(300, 500, 100, 100);

//    } completion:^(BOOL finished) {

//        

//        self.imagev.frame = CGRectMake(0, 0, 100, 100);

//    }];

    

//    UIView * view1 = [[[UIView alloc]initWithFrame:CGRectMake(0, 300, 50, 50)]autorelease];

//    view1.backgroundColor = [UIColor redColor];

//    [self.view addSubview:view1];

//    

//    [UIView transitionFromView:view1 toView:sender duration:1.0 options:UIViewAnimationOptionCurveEaseOut completion:^(BOOL finished) {

//        

//        

//    }];

    

    //基础动画

    CABasicAnimation *basicA = [CABasicAnimation animationWithKeyPath:@"transform.scale"];

//    //起始值

    basicA.fromValue = @(1);

    basicA.toValue = @(3);

    basicA.duration = 3.f;

    basicA.autoreverses = YES;

    basicA.repeatCount = NSIntegerMax;

//

//    [self.imagev.layer addAnimation:basicA forKey:@"aaa"];

    

    CABasicAnimation *basicA1 = [CABasicAnimation animationWithKeyPath:@"transform.rotation"];

    basicA1.fromValue = @(0);

    basicA1.toValue = @(2 * M_PI);

    basicA1.duration = 3.f;

//    basicA1.autoreverses = YES;

    basicA1.repeatCount = NSIntegerMax;

//  [self.imagev.layer addAnimation:basicA1 forKey:@"bbb"];

    

    CAAnimationGroup *groupA = [CAAnimationGroup animation];

    groupA.animations = @[basicA , basicA1];

    //一部分参数会覆盖原有参数

     groupA.duration = 3.f;

    groupA.repeatCount = NSIntegerMax;

     groupA.autoreverses = YES;

    [self.imagev.layer addAnimation:groupA forKey:@"ccc"];

    

    // 帧动画

    CAKeyframeAnimation *keyframeA = [CAKeyframeAnimation animationWithKeyPath:@"position"];

    //创建可变路径

    CGMutablePathRef path = CGPathCreateMutable();

    //设置轨迹

    CGPathMoveToPoint(path, NULL, 50, 50);

    CGPathAddLineToPoint(path, NULL, 100, 100);

    CGPathAddLineToPoint(path, NULL, 250, 100);

    CGPathAddLineToPoint(path, NULL, 250, 250);

    CGPathAddLineToPoint(path, NULL, 100, 100);

    //曲线

    //需要设置3个坐标点

    // (cp1x, cp1y),(cp2x, cp2y)- 会尽量靠近这两个点但不会穿过

    //(x, y) - 目的点

    

    CGPathAddCurveToPoint(path, NULL, 50, 50, 300, 300, 300, 500);

    keyframeA.duration = 3;

    keyframeA.path = path;

    

//     [self.imagev.layer addAnimation:keyframeA forKey:@"ddd"];

   

    CATransition *tran = [CATransition animation];

    tran.type = @"cube";

    //做方向

    tran.duration = 0.2f;

    tran.subtype =kCAGravityTopLeft;

    tran.repeatCount = NSIntegerMax;

//    [sender.layer addAnimation:tran forKey:@"eee"];

    

}

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


原文地址:https://www.cnblogs.com/yuhaojishuboke/p/5043067.html