您的位置:首页 > 产品设计 > UI/UE

ios开发之UI基础--transframe属性

2015-09-01 23:24 447 查看
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: