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 

  • 相关阅读:
    如何使用php实现首页和子页面之间的交互
    用php实现,打开哪个页面哪个页面就有默认的样式
    后台链接前台有关显示不显示
    上传文件的最大值,post传值的最大值得修改
    linux 操作系统的安装,本地登录及远程登录,vnc连接操作详细步骤
    滑动组件
    Numpy简介
    java对象序列化
    集合类操作需要注意的地方
    TreeMap详解
  • 原文地址:https://www.cnblogs.com/sungk/p/5171083.html
Copyright © 2011-2022 走看看