IOS CGAffineTransform一些用法

1. CGAffineTransformMakeTranslation

    通过指定x, y值来创建一个平移矩阵

   

2.     CGAffineTransformTranslate

    在已存在的矩阵中使用平移

    

3.     CGAffineTransformMakeRotation

    通过指定角度来创建一个旋转矩阵

    

4.     CGAffineTransformRotate

    在已存在的矩阵中使用旋转

    

5.     CGAffineTransformMakeScale

    通过指定x, y缩放因子来创建一个缩放矩阵

    

     CGAffineTransformScale

    在已存在的矩阵中使用缩放

======================================================

创建

CGAffineTransform transform = CGAffineTransformMakeRotation(M_2_PI);


view都有CGAffineTransform 这个属性

@property(nonatomic) CGAffineTransform transform;   // default is CGAffineTransformIdentity. animatable


使用 

CGAffineTransform transform = CGAffineTransformMakeRotation(M_2_PI);

 v.transform = transform;

 [UIView animateWithDuration:0.3 animations:^{
        
        //组合叠加
        CGAffineTransform transform1 = v.transform;
        CGAffineTransform transform2 = CGAffineTransformRotate(transform1, M_2_PI);
        CGAffineTransform transform3 = CGAffineTransformScale(transform2, 0.8, 0.8);
        CGAffineTransform transform4 = CGAffineTransformTranslate(transform3, 10, 10);
        v.transform = transform4;
        
    }];

一下是一些基本的用法demo

 v = [[UIView alloc] initWithFrame:CGRectMake(100, 100, 100, 300)];
    [v setBackgroundColor:CAREMAINCOLOR];
    [self.view addSubview:v];

    
     NSTimer *tmer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(animates) userInfo:nil repeats:YES];
    [tmer fire];

-(void)animates
{
    /*
    CGAffineTransformMakeTranslation
    通过指定x, y值来创建一个平移矩阵
   
     CGAffineTransformTranslate
    在已存在的矩阵中使用平移
    
     CGAffineTransformMakeRotation
    通过指定角度来创建一个旋转矩阵
    
     CGAffineTransformRotate
    在已存在的矩阵中使用旋转
    
     CGAffineTransformMakeScale
    通过指定x, y缩放因子来创建一个缩放矩阵
    
     CGAffineTransformScale
    在已存在的矩阵中使用缩放
     */
  
//    ========================================================

    if (v.height==300) {
        [UIView animateWithDuration:0.5 animations:^{
            [v setFrame:CGRectApplyAffineTransform(CGRectMake(v.frame.origin.x, v.frame.origin.y, v.frame.size.width,0), CGAffineTransformMakeTranslation(0, v.frame.size.height))];//v高度变0 同时移动y 到 v高度的距离==》向下收起的动画效果
            //code
        }];
        
    }else
    {
        [UIView animateWithDuration:0.5 animations:^{
            [v setFrame:CGRectApplyAffineTransform(CGRectMake(v.frame.origin.x, v.frame.origin.y, v.frame.size.width, 300), CGAffineTransformMakeTranslation(0, -300))];//v高度变300 同时移动y 到 负v高度的距离==》向上展示的动画效果
            //code
        }];
        
    }
    
//    ========================上一个状态下移动x-->10,y-->0================================
    
//    [UIView animateWithDuration:0.5 animations:^{
//        v.transform = CGAffineTransformTranslate(v.transform,10,0);
//    }];

    
//    =======================上一个状态的基础上旋转M_PI/3=================================
    
//    [UIView animateWithDuration:0.5 animations:^{
//        v.transform = CGAffineTransformRotate(v.transform,M_PI/3);
//    }];
    
//    =======================原始状态基础上旋转M_PI/3=================================
    
//    [UIView animateWithDuration:0.5 animations:^{
//        v.transform = CGAffineTransformMakeRotation(M_PI/3);
//    }];

    
    
//    =======================原始状态的基础上x,y缩小到0.8=================================
    
//    if (v.width>320||v.height>400) {
//        [UIView animateWithDuration:0.5 animations:^{
//            v.transform = CGAffineTransformScale(v.transform,0.8,0.8);
//        }];
//    }else
//    {
//        [UIView animateWithDuration:0.5 animations:^{
//            v.transform = CGAffineTransformScale(v.transform,1.2,1.2);
//        }];
//    }
    
//    =======================上一个状态的基础上x,y缩小到0.8=================================

//    [UIView animateWithDuration:0.5 animations:^{
//        v.transform = CGAffineTransformScale(v.transform,0.8,0.8);
//    }];

//    =======================原始状态的基础上x,y缩小到0.8=================================

//    [UIView animateWithDuration:0.5 animations:^{
//        v.transform = CGAffineTransformMakeScale(0.8,0.8);
//    }];
    
}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值