CGAffineTransform的疑惑探索
来源:互联网 发布:中国航信网络面试 编辑:程序博客网 时间:2024/05/17 04:48
看到YYKit大神写的这几行代码,有些疑惑,特此记。
/// Get the transform rotation./// @return the rotation in radians [-PI,PI] ([-180°,180°])static inline CGFloat CGAffineTransformGetRotation(CGAffineTransform transform) { return atan2(transform.b, transform.a);}/// Get the transform's scale.xstatic inline CGFloat CGAffineTransformGetScaleX(CGAffineTransform transform) { return sqrt(transform.a * transform.a + transform.c * transform.c);}/// Get the transform's scale.ystatic inline CGFloat CGAffineTransformGetScaleY(CGAffineTransform transform) { return sqrt(transform.b * transform.b + transform.d * transform.d);}/// Get the transform's translate.xstatic inline CGFloat CGAffineTransformGetTranslateX(CGAffineTransform transform) { return transform.tx;}/// Get the transform's translate.ystatic inline CGFloat CGAffineTransformGetTranslateY(CGAffineTransform transform) { return transform.ty;}
这是YYKit大神些的关于CGAffineTransform的一些获取比例和平移量的方法。对于其使用到的transform参数甚是不解,学习下。
作用:transform,是定义在二维空间上完成View的变换的属性。
初始化方法:
CGAffineTransform transform = CGAffineTransformMake(CGFloat a,CGFloat b,CGFloat c,CGFloa td,CGFloat tx,CGFloat ty)
transform参数结构:
根据该结构可以得到一个3x3的矩阵表达式:
矩阵算法公式:
根据计算公式就比较容易理解CGAffineTransform中的各个参数的意思了,对YYKit大神的以上方法的依据也有了认知。
结论:
1、a,d 会直接影响视图的缩放2、c会影响视图宽度的改变,b会影响视图高度的改变3、tx会影响在x方向的偏移量, ty会影响在y方向的偏移量
感谢燃烧的大叔的博文提供的资源和结论为我解决了不少疑惑:
燃烧的大叔的结论:
1、x按照a值进行了比例缩放,y按照d的值进行比列缩放,最重要的是缩放的过程中View的point(中心点)是不会改变的。
接着对b,c,t.x ,ty,进行深度研究发现:
2、x会跟着c的值进行拉伸(View的宽度是跟着改变),y会跟着b的值进行拉伸(View的高度跟着改变),要注意到的是c和b的值改变不会影响到View的point(center中心点)的改变。这是个很有意思的两个参数。
3、x会跟着t.x进行x做表平移,y会跟着t.y进行平移。这里的point(center)是跟着变换的。
博文连接: http://www.jianshu.com/p/6c09d138b31d
阅读全文
0 0
- CGAffineTransform的疑惑探索
- 对于SSDT HOOK的疑惑和探索
- CGAffineTransform的基础认识
- CGAffineTransform的一般方法
- CGAffineTransform的使用
- CGAffineTransform的使用大概
- CGAffineTransform
- CGAffineTransform
- CGAffineTransform
- CGAffineTransform
- CGAffineTransform
- CGAffineTransform
- CGAffineTransform
- IOS中CGAffineTransform的使用方法
- CGAffineTransform控件的旋转显示
- IOS学习 CGAffineTransform的使用
- CoreGraphics中的 CGAffineTransform的讲解
- CGAffineTransform的不同组合方式
- 第15周项目2
- Storm-HBase集成--配置和开发
- 原来,在Linux系统也有快速格式化功能
- 第十周 项目 2
- 使用频率较高的7大seo作弊技术手法
- CGAffineTransform的疑惑探索
- 使用caffe实现多标签输入
- iOS 设置系统类似的方法弃用警告方式
- 每隔一段时间就报这个错误
- 本地jconsole远程监控linux系统tomcat
- JavaScript Boolean 对象
- MyBatis JdbcType 与Oracle、MySql数据类型对应关系详解
- 对DDS的深度认识
- 记录一个JavaScript播放器