ios开发之UI基础--transframe属性
来源:互联网 发布:手机淘宝到货退款流程 编辑:程序博客网 时间:2024/06/05 06:17
1. transform属性
在OC中,通过transform属性可以修改对象的平移、缩放比例和旋转角度
常用的创建transform结构体方法分两大类
(1) 创建“基于控件初始位置”的形变
CGAffineTransformMakeTranslation(平移)
CGAffineTransformMakeScale(缩放)
CGAffineTransformMakeRotation(旋转)
(2) 创建“基于transform参数”的形变
CGAffineTransformTranslate
CGAffineTransformScale
CGAffineTransformRotate
补充:
在OC中,所有跟角度相关的数值,都是弧度值,180° = M_PI
正数表示顺时针旋转
负数表示逆时针旋转
提示:由于transform属性可以基于控件的上一次的状态进行叠加形变,例如,先旋转再平移。因此在实际动画开发中,当涉及位置、尺寸形变效果时,大多修改控件的transform属性,而不是frame、bounds、center 。
示例代码:
- #import "ViewController.h"
- @interface ViewController ()
- @property (weak, nonatomic) IBOutlet UIButton *button;
- @end
- @implementation ViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- // Do any additional setup after loading the view, typically from a nib.
- }
- // 平移
- - (IBAction)trasnlate:(id)sender {
- // 一次性的移动10 的距离
- // _button.transform = CGAffineTransformMakeTranslation(10, 0);
- // 如果想要持续移动,那么就需要得到当前view的transform
- // 1. 获取当前button的transform属性
- CGAffineTransform transform = _button.transform;
- // 2. 在transform的基础上进行修改
- _button.transform = CGAffineTransformTranslate(transform, 10, 0);
- }
- // 缩放
- - (IBAction)scal:(id)sender {
- // 执行缩放
- // _button.transform = CGAffineTransformMakeScale(0.5, 0.5);
- // 持续执行缩放
- // 1. 获取当前button的transform
- CGAffineTransform transform = _button.transform;
- // 2. 在transform进行修改
- _button.transform = CGAffineTransformScale(transform, 0.5, 0.5);
- }
- // 旋转
- - (IBAction)rotate:(id)sender {
- // _button.transform = CGAffineTransformMakeRotation(M_PI_4);
- [UIView animateWithDuration:1 animations:^{
- // 1. 获取当前button的transform
- CGAffineTransform transform = self.button.transform;
- // 2. 在transform进行修改
- self.button.transform = CGAffineTransformRotate(transform, M_PI_4);
- self.button.transform = CGAffineTransformTranslate(transform, 30, 0);
- self.button.transform = CGAffineTransformScale(transform, 1.5, 1.5);
- }];
- }
- - (IBAction)reset:(id)sender {
- // 恢复原始状态
- _button.transform = CGAffineTransformIdentity;
- }
- @end
0 0
- ios开发之UI基础--transframe属性
- iOS开发UI基础—03transframe属性(形变)
- IOS开发UI—transframe属性
- iOS开发UI篇—transframe属性(形变)
- iOS开发UI篇—transframe属性(形变)
- iOS开发UI篇—transframe属性(形变)
- iOS开发UI篇—transframe属性(形变
- iOS开发UI篇—transframe属性(形变)
- iOS开发UI篇—transframe属性(形变)
- iOS开发UI篇—transframe属性(形变)
- ios 形变属性—transframe
- ios开发之UI基础
- iOS开发之UI基础--Button基础
- iOS基础开发-UI基础之UIScrollview
- IOS学习之iOS开发UI基础—手写控件,frame,center和bounds属性
- IOS开发之UI控件属性
- iOS开发之UI基础--纯代码控件.frame,center,bounds属性
- ios开发之UI基础--懒加载
- 一些优秀的实时开发社区
- 如何配置 MongoDB 副本集
- 条款02 尽量以const enum inline 替换#define
- 总结自己的Git常用命令
- GPU并行计算入门1——背景知识
- ios开发之UI基础--transframe属性
- 犀牛——第8章函数 8.3 函数的实参和形参
- JS面向对象的程序设计
- Java多线程基础(三)Java传统线程互斥技术
- 笔记本电脑蓝屏问题处理
- C++ operator new 重载(两个参数)
- shell脚本那点事儿7
- 动态数组进行对象管理
- java基础 面向对象2