CALayer的隐式动画

calayer就是用来做动画,所以内部就隐含了一些动画。改变属性的时候就触发动画,默认的动画时长时0.25秒

如果可动画属性发生改变,就会产生动画

例如

1)bounds:缩放动画

2)position 平移动画

3)opacity 淡入淡出动画,改变了透明度

在帮助里搜索animatable可以查到可动画属性

 

改变这些属性,都可以触发动画。

//
//  MainViewController.m
//  CALayer隐式动画_demo1
//
//  Created by mac on 13-10-1.
//  Copyright (c) 2013年 mac. All rights reserved.
//

#import "MainViewController.h"
#import <QuartzCore/QuartzCore.h>

@interface MainViewController ()
@property (nonatomic,weak) CALayer *mylayer;
@property (nonatomic,strong) NSArray *colorlist;
@property (nonatomic,strong) NSArray *imagelist;
@end

@implementation MainViewController



- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    
    CALayer *mylayer = [CALayer layer];
    [mylayer setBounds:CGRectMake(0, 0, 100, 100)];
    [mylayer setPosition:CGPointMake(50, 50)];
    [mylayer setBackgroundColor:[UIColor redColor].CGColor];
    [self.view.layer addSublayer:mylayer];
    self.mylayer = mylayer;
    
    self.colorlist = @[[UIColor redColor],[UIColor yellowColor],[UIColor blueColor],[UIColor grayColor]];
    UIImage *image1 = [UIImage imageNamed:@"头像1.png"];
    UIImage *image2 = [UIImage imageNamed:@"头像2.png"];
    self.imagelist = @[image1,image2];
    
}

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *touch = [touches anyObject];
    CGPoint point = [touch locationInView:self.view];
    
    // 位置
    [self.mylayer setPosition:point];
    // 颜色
    NSInteger icolor = arc4random_uniform(self.colorlist.count);
    [self.mylayer setBackgroundColor:[self.colorlist[icolor] CGColor]];
    // 透明度
    CGFloat fopacity = arc4random_uniform(50)/100.0 + 0.5;
    [self.mylayer setOpacity:fopacity];
    // 尺寸
    CGFloat size = arc4random_uniform(50) + 50;
    [self.mylayer setBounds:CGRectMake(0, 0, size, size)];
    // 圆角半径
    CGFloat iradius = arc4random_uniform(20);
    [self.mylayer setCornerRadius:iradius];
    // 旋转角度
    CGFloat fangle = M_PI * arc4random_uniform(180)/180.0;
    [self.mylayer setTransform:CATransform3DMakeRotation(fangle, 0, 0, 1)];
    // 图层内容
    NSInteger irdmimage = arc4random_uniform(2);
    UIImage *image = self.imagelist[irdmimage];
    [self.mylayer setContents:(id)image.CGImage];
}



@end



 

     // 取消动画效果

    [CATransactionbegin];

 
  

    [CATransactionsetDisableActions:YES];

 
  

    // 这期间可以设置改变属性,伴随的隐式动画将不执行。

 
  

    [CATransactioncommit];




 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/damao2012/p/3348669.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值