iOS 官方文档 CGAffineTransform

原创 2015年11月19日 16:47:20

一、创建一个仿射变换矩阵(单个变换)

1、CGAffineTransformMake

(1) 方法原型

CGAffineTransform CGAffineTransformMake ( CGFloat a, CGFloat b, CGFloat c, CGFloat d, CGFloat tx, CGFloat ty );

2、CGAffineTransformMakeRotation

(1) 方法原型

CGAffineTransform CGAffineTransformMakeRotation ( CGFloat angle );
//旋转

(2) 事例代码

//实现旋转
- (void)transform1
{
    [UIView animateWithDuration:3.0
                     animations:^{
    view.transform=CGAffineTransformRotate(view.transform, M_PI); //旋转
                     }];

}

3、CGAffineTransformMakeScale

(1) 方法原型

CGAffineTransform CGAffineTransformMakeScale ( CGFloat sx, CGFloat sy );
//缩放

(2) 事例代码

//实现放大或缩小
- (void)transform2
{
    [UIView animateWithDuration:3.0
                     animations:^{
                        view.transform=CGAffineTransformScale(view.transform, 1.0, 2.0); //实现的是放大和缩小
                     }];

}

4、CGAffineTransformMakeTranslation

(1) 方法原型

CGAffineTransform CGAffineTransformMakeTranslation ( CGFloat tx, CGFloat ty ); //平移

(2) 事例代码

//实现平移
- (void)transform3
{
    [UIView animateWithDuration:3.0
                     animations:^{
                         view.transform=CGAffineTransformTranslate(view.transform, 20, 20); //平移
                     }];

}

二、修改仿射变换矩阵(组合变换)

1、CGAffineTransformTranslate

(1) 方法原型

CGAffineTransform CGAffineTransformTranslate ( CGAffineTransform t, CGFloat tx, CGFloat ty );
//transform+平移

(2) 事例代码

//transform+平移
- (void)transform4
{
    [UIView animateWithDuration:3.0
                     animations:^{
                         view.transform=CGAffineTransformTranslate(CGAffineTransformRotate(view.transform, M_PI), 100, 100); //旋转+平移
                        // view.transform=CGAffineTransformTranslate(CGAffineTransformScale(view.transform, 1.0, 2.0), 100, 100); //缩放+平移

                     }];
}

2、CGAffineTransformScale

(1) 方法原型

CGAffineTransform CGAffineTransformScale ( CGAffineTransform t, CGFloat sx, CGFloat sy );
//transform+缩放

(2) 事例代码

//transform+缩放
- (void)transform5
{
    [UIView animateWithDuration:3.0
                     animations:^{
                         //view.transform=CGAffineTransformScale(CGAffineTransformRotate(view.transform, M_PI), 0.5, 0.5); //旋转+缩放
                          view.transform=CGAffineTransformScale(CGAffineTransformTranslate(view.transform, 20, 20), 0.5, 0.5); //平移+缩放

                     }];
}

3、CGAffineTransformRotate

(1) 方法原型

CGAffineTransform CGAffineTransformRotate ( CGAffineTransform t, CGFloat angle );
// transform+旋转

(2) 事例代码

//transform+旋转
- (void)transform6
{
    [UIView animateWithDuration:3.0
                     animations:^{
                         view.transform=CGAffineTransformRotate(CGAffineTransformScale(view.transform, 1.0, 2.0), M_PI); //缩放+旋转
                        // view.transform=CGAffineTransformRotate(CGAffineTransformTranslate(view.transform, 20, 20), M_PI); //平移+旋转

                     }];
}

4、CGAffineTransformInvert

(1) 方法原型

CGAffineTransform CGAffineTransformInvert ( CGAffineTransform t );
//反向变换效果,比如本来是放大的变换,使用了这个方法之后,就变成了缩小的变换了

(2) 事例代码

//反向transform效果
- (void)transform7
{
    [UIView animateWithDuration:3.0
                     animations:^{
                        // view.transform=CGAffineTransformInvert(CGAffineTransformTranslate(view.transform, 20, 20)); //平移
                         view.transform=CGAffineTransformInvert(CGAffineTransformScale(view.transform, 1.0, 2.0)); //缩放

                     }];
}

5、CGAffineTransformConcat

(1) 方法原型

CGAffineTransform CGAffineTransformConcat ( CGAffineTransform t1, CGAffineTransform t2 );
//同时进行两个变换

(2) 事例代码

//同时进行两个变换
- (void)transform8
{
    [UIView animateWithDuration:3.0
                     animations:^{
                         view.transform=CGAffineTransformConcat(CGAffineTransformScale(view.transform, 1.0, 2.0),CGAffineTransformTranslate(view.transform, 20, 20)); //缩放+平移

                     }];
}

三、运用仿射变换

1、CGPointApplyAffineTransform

(1) 方法原型

CGPoint CGPointApplyAffineTransform ( CGPoint point, CGAffineTransform t );
//把变化应用到一个点上

(2) 说明

CGPoint CGPointApplyAffineTransform (
CGPoint point,
CGAffineTransform t );
这个方法的返回值还是一个CGPoint,在我看来由于是一个点,
这个方法最终也只会影响这个点所在的位置。

2、CGSizeApplyAffineTransform

(1) 方法原型

CGSize CGSizeApplyAffineTransform ( CGSize size, CGAffineTransform t );
//运用到一个区域中

(2) 说明

CGSize CGSizeApplyAffineTransform (
CGSize size,
CGAffineTransform t);
只会改变区域的大小

3、CGRectApplyAffineTransform

(1) 方法原型

CGRect CGRectApplyAffineTransform ( CGRect rect, CGAffineTransform t );
//运用到一个带原点的区间

(2) 说明

CGRect CGRectApplyAffineTransform (
CGRect rect,
CGAffineTransform t);


这个我亲自试验过,三个属性 放缩、旋转和平移都有的一个Transformation ,
但处理之后只会改变这个区域原点的位置,和宽、高的大小,并不会旋转

四、评估仿射变换

1、CGAffineTransformIsIdentity

(1) 方法原型

bool CGAffineTransformIsIdentity ( CGAffineTransform t );

(2) 说明

CGAffineTransformIsIdentity //检测一个Transformation是不是恒等变换,也就是说不变

bool CGAffineTransformIsIdentity ( CGAffineTransform t);//其结果返回一个BOOL值

2、CGAffineTransformEqualToTransform

(1) 方法原型

bool CGAffineTransformEqualToTransform ( CGAffineTransform t1, CGAffineTransform t2 );

(2) 说明

CGAffineTransformEqualToTransform //检测两个Transformation是否相等。

bool CGAffineTransformEqualToTransform (
CGAffineTransform t1,
CGAffineTransform t2);

iOS开发官方文档汇总

iOS开发官方文档汇总 Feb 28, 2013 ~ 1 Comment ~ Written by Ider 程序员的学习过程是无止境的,程序员学习的途径是多样的。可以从视频教...
  • xn4545945
  • xn4545945
  • 2014年06月10日 21:56
  • 10117

IOS开发UI篇--仿射变换(CGAffineTransform)使用小结

一、理论基础请参考CGAffineTransform简单分析二、效果演示三、实现代码3.1:位移变换-(void)positionAnimation{ _demoView.transform ...
  • yixiangboy
  • yixiangboy
  • 2015年09月22日 12:51
  • 6402

IOS CGAffineTransform 用于视图平移,放缩,旋转

CGAffineTransform 今天碰到了一个旋转放缩图片的一个demo,在看的过程中发现实现图片变化的那个方法特别简单。 一共只有三句话,下面就是这个方法 - (void)transformIm...
  • u012884714
  • u012884714
  • 2013年12月20日 21:45
  • 18933

OC_runtime运行时官方文档翻译

Objective-C的运行时参考 配套指南 Objective-C的运行时编程指南 在宣布 IONDRVLibraries.h  NSObjCRuntime.h  objc ...
  • liangliang103377
  • liangliang103377
  • 2014年09月02日 16:03
  • 12985

iOS 官方文档翻译

各路大神爱发博客的、爱写写东西的、爱分享的、爱技术的、潮人、妹纸、男神。都可已加入到我们这个大家庭来。一起做些有趣的事情。iOS 官方文档翻译QQ群:486111671。github 地址:htt...
  • wq820203420
  • wq820203420
  • 2015年11月06日 12:33
  • 928

iOS开发-Swift4译文Swift4官方文档中文版/ Basic Operators(上)(转载)

原文链接:http://blog.csdn.net/feng2qing/article/details/73864580 该文章翻译自Apple官方文档: The Swift 4 Program...
  • werctzzz
  • werctzzz
  • 2017年06月29日 17:37
  • 9914

OC基础----查看苹果帮助文档

Application Programming Interface   API  应用程序编程接口                 苹果每次升级或者更新iOS系统,都会添加或更新大量的API...
  • cherry_711
  • cherry_711
  • 2016年03月01日 09:31
  • 1305

Apple官方文档翻译之iOS 文件管理系统

基本的文件系统     在OSX 和iOS 中的文件系统是为了处理持续性存储数据文件,程序包,这些文件和它们的操作系统紧密的联系着。因此,文件系统是被所有线程使用最基本的资源之一。     OSX...
  • moxi_wang
  • moxi_wang
  • 2016年03月21日 21:43
  • 673

iOS开发文档(中文)

(本文主要转载:http://ourcoders.com/thread/show/117/) 目的:         做这个笔记本主要是重新熟悉一下iOS开发,因为之前学的东西太乱太杂,没有一个详细的...
  • pelsor
  • pelsor
  • 2015年09月30日 16:15
  • 3913

Xcode官方文档的使用详解

一直想写这么一个东西,长期以来我发现很多初学者的问题在于不掌握学习的方法,所以,Xcode那么好的SDK文档摆在那里,对他们也起不到什么太大的作用。从论坛、微博等等地方看到的初学者提出的问题,也暴露出...
  • codeblshi
  • codeblshi
  • 2015年01月25日 21:54
  • 496
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:iOS 官方文档 CGAffineTransform
举报原因:
原因补充:

(最多只允许输入30个字)