zoukankan      html  css  js  c++  java
  • 仿射变换(CGAffineTransform)使用小结

    一、理论基础

    请参考CGAffineTransform简单分析

    二、效果演示

    放射动画演示效果

    三、实现代码

    3.1:位移变换

    -(void)positionAnimation{
        _demoView.transform = CGAffineTransformIdentity;
        [UIView animateWithDuration:1.0f animations:^{
            _demoView.transform = CGAffineTransformMakeTranslation(100, 100);
        }];
    }

    3.2:缩放变换

    -(void)scaleAnimation{
        _demoView.transform = CGAffineTransformIdentity;
        [UIView animateWithDuration:1.0f animations:^{
            _demoView.transform = CGAffineTransformMakeScale(2, 2);
        }];
    }

    3.3:旋转变换

    -(void)rotateAnimation{
        _demoView.transform = CGAffineTransformIdentity;
        [UIView animateWithDuration:1.0f animations:^{
            _demoView.transform = CGAffineTransformMakeRotation(M_PI);
        }];
    }

    3.4:组合变换

    -(void)combinationAnimation{
        //仿射变换的组合使用
        _demoView.transform = CGAffineTransformIdentity;
        [UIView animateWithDuration:1.0f animations:^{
            CGAffineTransform transform1 = CGAffineTransformMakeRotation(M_PI);
            CGAffineTransform transform2 = CGAffineTransformScale(transform1, 0.5, 0.5);
            _demoView.transform = CGAffineTransformTranslate(transform2, 100, 100);
        }];
    }

    3.5:矩阵的反转

    -(void)invertAnimation{
        _demoView.transform = CGAffineTransformIdentity;
        [UIView animateWithDuration:1.0f animations:^{
            //矩阵反转
            _demoView.transform = CGAffineTransformInvert(CGAffineTransformMakeScale(2, 2));
        }];
    }

    四、补充

    • CGAffineTransformIdentity : 单位矩阵变换,一般用于仿射变换的初始化或者还原。
    • CGAffineTransformEqualToTransform(CGAffineTransform t1, 
      CGAffineTransform t2) : 判断两个变换矩阵是否相等

    • CGAffineTransformConcat(CGAffineTransform t1, 
      CGAffineTransform t2) : 得到两个矩阵相加后得到的最终矩阵

    • CGPoint CGPointApplyAffineTransform(CGPoint point, 
      CGAffineTransform t) : 某点通过矩阵变换之后的点

    • CGSize CGSizeApplyAffineTransform(CGSize size, CGAffineTransform t) : 某个size通过矩阵变换之后的size

    • CGRect CGRectApplyAffineTransform(CGRect rect, CGAffineTransform t) : 某个Rect通过矩阵变换之后的区域

    五、Demo下载地址

    github下载地址 

     

    转自:http://blog.csdn.net/yixiangboy 

  • 相关阅读:
    忽略大小写的RegularExpressionValidator
    Outlook 2010 “加载项执行错误。调用“Microsoft Exchange 加载项”加载项时,在“IDTExtensibility2”接口回调“OnConnection”期间,Outlook 出现故障”问题
    选择排序——算法系列
    代码杂记32
    数据库系统原理
    C#中的委托与事件
    C#多线程
    冒泡排序——算法系列
    快速排序——算法系列
    递归算法——猴子吃桃
  • 原文地址:https://www.cnblogs.com/sungk/p/5171083.html
Copyright © 2011-2022 走看看