//移动效果
CGAffineTransform CGAffineTransformMakeTranslation (    CGFloat tx,    CGFloat ty );CGAffineTransform CGAffineTransformTranslate (    CGAffineTransform t,    CGFloat tx,    CGFloat ty );//旋转效果
CGAffineTransform CGAffineTransformMakeRotation (    CGFloat angle );CGAffineTransform CGAffineTransformRotate (    CGAffineTransform t,    CGFloat angle );//缩放效果
CGAffineTransform CGAffineTransformMakeScale (    CGFloat sx,    CGFloat sy );CGAffineTransform CGAffineTransformScale (    CGAffineTransform t,    CGFloat sx,    CGFloat sy );//反转效果
CGAffineTransform CGAffineTransformInvert (    CGAffineTransform t );//只对局部产生效果
CGRect CGRectApplyAffineTransform (    CGRect rect,    CGAffineTransform t );//判断两个AffineTrans是否相等
bool CGAffineTransformEqualToTransform (    CGAffineTransform t1,    CGAffineTransform t2 );//获得Affine Transform
CGAffineTransform CGContextGetUserSpaceToDeviceSpaceTransform (    CGContextRef c );//下面的函数只起到查看的效果,比如看一下这个用户空间的点,转换到设备空间去坐标是多少CGPoint CGContextConvertPointToDeviceSpace (    CGContextRef c,    CGPoint point );CGPoint CGContextConvertPointToUserSpace (    CGContextRef c,    CGPoint point );CGSize CGContextConvertSizeToDeviceSpace (    CGContextRef c,    CGSize size );CGSize CGContextConvertSizeToUserSpace (    CGContextRef c,    CGSize size );CGRect CGContextConvertRectToDeviceSpace (    CGContextRef c,    CGRect rect );CGRect CGContextConvertRectToUserSpace (    CGContextRef c,    CGRect rect );

了解动画需要先了解仿射变换,先在View中添加一个按钮和一个图片, 通过这演示常见的变换,直接上码:

#import "ViewController.h"#define M_PI        3.14159265358979323846264338327950288
#define M_PI_2      1.57079632679489661923132169163975144
#define M_PI_4      0.785398163397448309615660845819875721
@interface ViewController ()
{UIButton *btn;UIImageView *imgview;
}
@end@implementation ViewController- (void)viewDidLoad {[super viewDidLoad];btn=[UIButton buttonWithType:UIButtonTypeSystem];btn.frame=CGRectMake(30, 30, 50, 50);btn.backgroundColor=[UIColor redColor];[btn setTitle:@"按钮" forState:UIControlStateNormal];[btn addTarget:self action:@selector(btnclick:) forControlEvents:UIControlEventTouchUpInside];[self.view addSubview:btn];imgview=[[UIImageView alloc]initWithImage:[UIImage imageNamed:@"test.jpg"]];imgview.frame=CGRectMake(100, 100, 120, 120);[self.view addSubview:imgview];}

一.平移变换,当我实验平移时,将下面代码放在按钮点击方法中,第一个方法第一次点击有效,第二个是每次点击都会平移,第三个不会平移

 //平移变换imgview.transform=CGAffineTransformMakeTranslation(10, 10); //每次移动参照点都是初始点imgview.transform=CGAffineTransformTranslate(imgview.transform, 20, 20);//平移参照第一个参数的点imgview.transform=CGAffineTransformIdentity;//初始点

二、旋转

 //旋转imgview.transform=CGAffineTransformMakeRotation(M_PI/4);//旋转参照初始值 正数顺时针 负数逆时针imgview.transform=CGAffineTransformRotate(imgview.transform, -M_PI/4);//旋转参照第一个参数的值

三、缩放

// 缩放imgview.transform=CGAffineTransformScale(imgview.transform,0.8,0.8);//在第一个参数的基础上缩放 第二三参数1时为正常大小imgview.transform=CGAffineTransformMakeScale(0.5,0.5);//在原视图的基础上缩放

四、翻转

//翻转// CGAffineTransform DefaultAffineTransform =CGAffineTransformMake(1, 0, 0, 1, 0, 0);//默认// imgview.transform=CGAffineTransformInvert(imgview.transform); //调用此行代码并不会产生翻转效果,因为恒等矩阵*恒等矩阵还是恒等矩阵,这样就没有变化CGAffineTransform AffineTransform =CGAffineTransformMake(0, 1, 1, 1, 1, 0);imgview.transform=CGAffineTransformInvert(AffineTransform);

五、合并

//合并 将两个仿射合并成一个仿射效果
//    CGAffineTransform AffineTransform1 =CGAffineTransformMakeScale(0.5,0.5);CGAffineTransform AffineTransform1=CGAffineTransformScale(imgview.transform,0.8,0.8);CGAffineTransform AffineTransform2 =CGAffineTransformMakeRotation(M_PI/4);CGAffineTransform AffineTransform3=CGAffineTransformConcat(AffineTransform1,AffineTransform2);CGAffineTransform AffineTransform4 =CGAffineTransformMake(0, 1, 1, 1, 1, 0);imgview.transform=CGAffineTransformConcat(AffineTransform3,AffineTransform4);

六、判断是否相同

 CGAffineTransform DefaultAffineTransform =CGAffineTransformMake(1, 0, 0, 1, 0, 0);CGAffineTransform DefaultAffineTransform1 =CGAffineTransformMake(1, 0, 0, 1, 0, 0);
//      CGAffineTransform AffineTransform1 =CGAffineTransformMakeScale(0.5,0.5);bool flag=CGAffineTransformEqualToTransform(DefaultAffineTransform, DefaultAffineTransform1);NSLog(@"%d",flag);

转载于:https://www.cnblogs.com/5ishare/p/4384177.html

CGAffineTransform相关推荐

  1. CGAffineTransform与CATransform3D

    CGAffineTransform 1.CG的前缀告诉我们,CGAffineTransform类型属于Core Graphics框架,Core Graphics实际上是一个严格意义上的2D绘图API, ...

  2. CGAffineTransform的使用大概:

    1. CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性,控制视图的缩放.旋转和平移操作: transform我们一般称为形变属性,其本 ...

  3. iOS压缩动画 CGAffineTransform

    因为项目需求,需要如下这样一个简单的动画效果: ####单个控件 这个动画效果,如果对控件使用UIView的block动画,设置控件的Frame值,是可以实现的. 比如下面这个效果: 我们可以代码来简 ...

  4. iOS开发 CGAffineTransform 让图片旋转, 旋转后获得图片旋转的角度

    1.让图片旋转 UIImageView *imageView = [[UIImageView alloc]init]; imageView.frame = CGRectMake(50, 50, 200 ...

  5. iOS方法类:CGAffineTransform

    iOS方法类:CGAffineTransform的使用大概 CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性,控制视图的缩放.旋转和平 ...

  6. CGAffineTransform 放射变换

    矩阵乘法 A B相乘要A的列数等于B的行数才有定义,结果是一个A行B列的矩阵C,C的每个元素值为A对应的行与B对应的列的元素乘积的和 具体看这里 原理 CGAffineTransform CGAffi ...

  7. CGAffineTransform 获取 旋转的弧度 和 角度 的方法

    CGAffineTransform _trans = sticker.transform;CGFloat rotate = acosf(_trans.a);// 旋转180度后,需要处理弧度的变化if ...

  8. CGAffineTransform 视频旋转(转)

    记录下视频旋转 // - (void)test:(NSURL *)url transformUrl:(NSURL *)exportUrl { [self rotateVideoAssetWithFil ...

  9. iOS CGAffineTransform你了解多少?

    CGAffineTransform介绍 概述 CGAffineTransform是一个用于处理形变的类,其可以改变控件的平移.缩放.旋转等,其坐标系统采用的是二维坐标系,即向右为x轴正方向,向下为y轴 ...

最新文章

  1. ftp服务器搭建(离线安装vsftpd),配置
  2. U3D 场景切换时 脚本对象,GO对象,资源对象的问题
  3. three.js glb 多个_25万的预算,奔驰GLB、宝马X1、奥迪Q3该怎么选
  4. Java多线程与并发库高级应用 学习笔记 1-9课
  5. Codeforces 550D. Regular Bridge 构造
  6. 用java实现zip压缩
  7. 如何通过7个Logback调整立即改善Java日志记录
  8. mysql 重复了更新_MYSql id相同就更新
  9. 中文字体字号和磅数的转化
  10. 京瓷打印机1025默认管理员密码_京瓷2235默认登录密码_动漫台
  11. SQL用了两年多,分享2个最常用的小技巧
  12. python和c++哪个好-关于python和c语言学哪个好
  13. python实现按照给定范围随机生成小数,偶数,奇数,整数,正态分布,均匀分布数据以及图片
  14. Mendeley从已有文献找相关文献的方法
  15. java数字金额大写金额_Java实现 将数字金额转为大写中文金额
  16. python词性标注_Python NLTK学习5(词性标注)
  17. 马克思主义基本原理概述
  18. 论文阅读笔记《Regularizing Dialogue Generation by Imitating Implicit Scenarios》
  19. linux power manager模型
  20. java 批量执行 sql_JDBC批量执行SQL

热门文章

  1. soapui自带的webservice实例 MockService
  2. .NEt中的继承、聚合和组合
  3. C#操作xml之xpath语法
  4. ADD_SHORTCUT_ACTION
  5. oracle部署--安装oracle软件与部署单实例数据库
  6. Angular 5.0 学习2:Angular 5.0 开发环境的搭建和新建第一个ng5项目
  7. C#用DataTable实现Group by数据统计
  8. android thread实例
  9. sql语句中的时间查询
  10. nosql_探索NoSQL系列