动画效果

动画效果

一、设置透明度

在ViewController.m中添加如下方法:

 

//渐变 alpha 0全透明 1不透明
- (void)test1{
  //先将初始状态改为全透明
  _redView.alpha = 1;

  //使用block动画,Duration是动画持续时间
  [UIView animateWithDuration:1 animations:^{
    //具体属性的变化,就在这里做
    self.redView.alpha = 0;
//用self将self对象也拷贝到block区域,可访问redView
  }];
}

 

 

二、平移

1.frame移动

//frame移动
- (void)test2{
    [UIView animateWithDuration:1 animations:^{
        //移动
        self.redView.center = CGPointMake(self.redView.center.x + 150, self.redView.center.y + 150);
    }];
}

2.transformTranslate平移(常用)

- (void)test{
    
    [UIView animateWithDuration:1 animations:^{
        //平移
     //只能执行一次,100为偏移值
self.redView.transform = CGAffineTransformMakeTranslation(100, 100);
    //可以执行多次
self.redView.transform = CGAffineTransformTranslate(self.redView.transform, 100, 100); }]; }

 

三、缩放

1.frame缩放

- (void)test2{
    [UIView animateWithDuration:1 animations:^{
        //缩放
        self.redView.frame = self.redView.frame = CGRectMake(150, 200, 100*2, 100*2);
    }];
}

2.transformScale缩放(常用)

- (void)test{

    

    [UIView animateWithDuration:1 animations:^{        

        //缩放

    //只能缩放一次,2是倍数

        self.redView.transform = CGAffineTransformMakeScale(2, 2);

    //可缩放多次

        self.redView.transform = CGAffineTransformScale(self.redView.transform, 2, 2);

    }];

    

}

 

 

三、旋转

transformRotation

- (void)test{

    

    [UIView animateWithDuration:1 animations:^{

        //旋转

    //旋转一次,参数以π为单位  M_PI  M_PI_2就是π/2

        self.redView.transform = CGAffineTransformMakeRotation(M_PI_2);

    //可多次旋转

        self.redView.transform = CGAffineTransformRotate(self.redView.transform, M_PI_2);

        

    }];

    

}

 

 

四、动画设置(不常用)

- (void)test3{
    //开始动画设置
    [UIView beginAnimations:nil context:nil];
    //设置动画的时间
    [UIView setAnimationDuration:2];
    //设置代理
    //[UIView setAnimationDelegate:self];
    //动画效果的节奏为慢进慢出
    [UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
    //设置具体的动画
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:self.redView cache:NO];
    //要干什么
    self.redView.alpha = 0;
    //提交动画
    [UIView commitAnimations];
    
}

 

五、弹簧动画

 

//弹簧效果
//Damping:弹簧系数,0-1之间,越小弹得越厉害
//Velocity:弹簧初始速度,越大越快
- (void)test4{ [UIView animateWithDuration:1 delay:NO usingSpringWithDamping:0.5 initialSpringVelocity:0.5 options:UIViewAnimationOptionCurveLinear animations:^{ self.redView.frame = CGRectMake(150, 200, 100, 100); } completion:nil]; }

 

 

六、定时器的使用

 

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
    //一直旋转效果 第一个参数为定时,在几秒内完成动画
    /*[NSTimer scheduledTimerWithTimeInterval:0.01 repeats:YES block:^(NSTimer * _Nonnull timer) {
        self.redView.transform = CGAffineTransformRotate(self.redView.transform, 2/180.0*M_PI);
    }];*/
    
    //心脏跳动效果
    [NSTimer scheduledTimerWithTimeInterval:1 repeats:YES block:^(NSTimer * _Nonnull timer) {
        [UIView animateWithDuration:0.2 animations:^{
            self.redView.transform = CGAffineTransformScale(self.redView.transform, 1.3, 1.3);
        } completion:^(BOOL finished) {
            self.redView.transform = CGAffineTransformScale(self.redView.transform, 1/1.3, 1/1.3);
            self.redView.transform = CGAffineTransformIdentity;
        }];
    }];
    
    
}

 

七、新浪微博弹簧动画

 1 #import "ViewController.h"
 2 
 3 #define kOffset 20
 4 #define kHeight 90
 5 #define kWidth 90
 6 #define kPadding ((self.view.frame.size.width-20-20-3*kWidth)*0.5)
 7 
 8 @interface ViewController ()
 9 @property (nonatomic, strong)NSMutableArray *itemsArray;
10 @property (nonatomic, strong)NSMutableArray *imgNamesArr;
11 @end
12 
13 @implementation ViewController
14 
15 - (void)viewDidLoad {
16     [super viewDidLoad];
17     
18     //创建数组
19     self.itemsArray = [NSMutableArray array];
20     
21     //创建三个视图
22     for (int i = 0; i < 3; i++) {
23         UIImageView *tempView = [[UIImageView alloc] initWithFrame:CGRectMake(kOffset +(kWidth + kPadding) * i, [UIScreen mainScreen].bounds.size.height, 90, 90)];
24         
25         tempView.layer.cornerRadius = 45;
26         //tempView.backgroundColor = [UIColor redColor];
27         tempView.image = [UIImage imageNamed:[self.imgNamesArr objectAtIndex:i]];//必须用self,否则不会调用懒加载
28         [self.view addSubview:tempView];
29         
30         //添加到数组里
31         [self.itemsArray addObject:tempView];
32     }
33     
34 }
35 
36 #pragma mark ------ 懒加载 ------
37 -(NSMutableArray *)imgNamesArr{
38     if (_imgNamesArr == nil) {
39         self.imgNamesArr = [NSMutableArray arrayWithArray:@[@"red_Background",@"purple_Background",@"blue_Background"]];
40     }
41     return _imgNamesArr;
42 }
43 
44 #pragma mark ------ 触摸事件 ------
45 -(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
46     //先获取动画的对象
47     for (int i = 0; i < _itemsArray.count; i++) {
48         UIImageView *aImgView = [_itemsArray objectAtIndex:i];
49         
50         [UIView animateWithDuration:0.5 delay:i * 0.1 options:UIViewAnimationOptionCurveLinear animations:^{
51             aImgView.center = CGPointMake(aImgView.center.x, 400);
52         } completion:nil];
53     }
54 }
55 
56 
57 
58 
59 @end

 

posted @ 2018-08-04 20:58 健泽 阅读( ...) 评论( ...) 编辑 收藏
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值