iOS开发UI篇--仿射变换(CGAffineTransform
2018-11-20 本文已影响6人
扒皮狼
一、理论基础
二、效果演示
1.gif三、实现代码
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下载地址
Demo下载地址:这是一个我的iOS交流群:624212887,群文件自行下载,不管你是小白还是大牛热烈欢迎进群 ,分享面试经验,讨论技术, 大家一起交流学习成长!希望帮助开发者少走弯路。
如果觉得对你还有些用,就关注小编+喜欢这一篇文章。你的支持是我继续的动力。
下篇文章预告:UICollectionView初步入门
文章来源于网络,如有侵权,请联系小编删除。