CGAffineTransform的使用大概:
1.
CoreGraphics框架中的CGAffineTransform类可用于设定UIView的transform属性,控制视图的缩放、旋转和平移操作:
transform我们一般称为形变属性,其本质是通过矩阵变化改变控件的大小、位置、角度等.
另称放射变换矩阵,可参照线性代数的矩阵实现方式0.0
这里附上的CGAffineTransform官方文档:
总得来说,这个类中包含3张不同类型,分别使用如下3个方法创建数值;
1.CGAffineTransformMakeTranslation(CGFloat tx, CGFloat ty)(平移:设置平移量)
2.CGAffineTransformMakeScale(CGFloat sx, CGFloat sy)(缩放:设置缩放比例)仅通过设置缩放比例就可实现视图扑面而来和缩进频幕的效果。
3.CGAffineTransformMakeRotation(CGFloat angle)(旋转:设置旋转角度)
以上3个都是针对视图的原定最初位置的中心点为起始参照进行相应操作的,在操作结束之后可对设置量进行还原:
view.transform=CGAffineTransformIdentity;
另外还可以通过CGAffineTransformTranslate等方法对现有的transform进行进一步处理;
transform 是一种状态,并且只有一种状态
(1)CGAffineTransformMakeTranslation(<#CGFloat tx#>, <#CGFloat ty#>):只能变化一次,因为这种方式的变化始终是以最原始的状态值进行变化的,所以只能变化一次
例如:
UIButton *head = (UIButton *) [self.view viewWithTag:10];
head.transform = CGAffineTransformMakeTranslation(0,-10);
(2)CGAffineTransformTranslate(CGAffineTransform t, <#CGFloat tx#>, <#CGFloat ty#>):能够多次变化,每次变化都是以上一次的状态(CGAffineTransform t)进行的变化,所以可以多次变化
head.transform = CGAffineTransformTranslate(head.transform, 0, -10);
(3) CGAffineTransformIdentity:清空所有的设置的transform(一般和动画配合使用,只能使用于transfofrm设置的画面)
UIButton *head = (UIButton *) [self.view viewWithTag:10];
head.transform = CGAffineTransformIdentity;
(4)CGAffineTransformMakeScale( CGFloat sx, CGFloat sy) (缩放:设置缩放比例)仅通过设置缩放比例就可实现视图扑面而来和缩进频幕的效果。
UIButton *head = [self.view viewWithTag:10];
head.transform = CGAffineTransformScale(head.transform,1.5,1.5);
(5) CGAffineTransformMakeRotation( CGFloat angle) (旋转:设置旋转角度)
UIButton *head = [self.view viewWithTag:10];
head.transform = CGAffineTransformMakeRotation(M_PI_2);
最新文章
- 2.5多重else嵌套的二次方程求根
- 使用SSIS汇集监控数据
- hdu5642 数位dp
- hdu5536 字典树xor
- bzoj题解汇总(1032~1051)
- 手机app常见bug积累
- sublime php语法检查
- java安全HTTPS工具类
- 【二】刚学Python的几道简单练习题
- 帮Python找“对象”
- SiteMesh入门(1-1)SiteMesh是什么?
- Win10系统盘制作及安装流程
- Oracle AWRSQRPT报告生成和性能分析
- 外网访问内网Docker容器
- JavaScript之JS的数据类型
- 面向对象ZJ
- LG3975 [TJOI2015]弦论
- 《Linux内核分析》课程第四周学习总结
- C++成员函数指针的应用
- 将javaweb项目部署到阿里云服务器
热门文章
- 使一个div元素上下左右居中
- 调试错误,请回到请求来源地,重新发起请求。 错误代码 insufficient-isv-permissions 错误原因: ISV权限不足,建议在开发者中心检查对应功能是否已经添加
- java疑问
- chrome开启headless模式以及代理
- NOIP2018 保卫王国(动态DP)
- Swagger2 模拟请求头
- docker:设置国内镜像仓储
- Java链接Redis时出现 “ERR Client sent AUTH, but no password is set”
- Convert AS400 Spool to PFD Tools – PDFing
- 在其他博客里看到的比较好的map用法,进行储存啦啦~ x