Transform Demo(按钮操作Demo优化)
//
// ViewController.m
// Transform演练
//
#import "ViewController.h"
typedef enum
{
kMovingDirTop = 10,
kMovingDirBottom,
kMovingDirLeft,
kMovingDirRight
} kMovingDir;
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIButton *headImageView;
// @property (nonatomic, assign) int delta;
@end
@implementation ViewController
/**
transform属性
在开发中如果遇到移动空间位置、改变大小最好使用transform属性
使用transform属性修改控件的位置、尺寸不需要计算形变之后的结果
*/
- (IBAction)move:(UIButton *)button
{
// self.delta -= 20;
// NSLog(@"%d",self.delta);
// MakeTranslation 是基于对象初始位置做的形变
// self.headImageView.transform = CGAffineTransformMakeTranslation(0, self.delta);
// Translate 是基于transform参数做的形变,实际效果就是一个累加的位移效果
switch (button.tag) {
case kMovingDirTop:
self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, 0, -20);
break;
case kMovingDirBottom:
self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, 0, +20);
break;
case kMovingDirLeft:
self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, -20, 0);
break;
case kMovingDirRight:
self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, +20, 0);
break;
}
}
- (IBAction)zoom:(UIButton *)button
{
if(button.tag){
self.headImageView.transform = CGAffineTransformScale(self.headImageView.transform, 1.2, 1.2);
} else {
self.headImageView.transform = CGAffineTransformScale(self.headImageView.transform, 0.8, 0.8);
}
}
- (IBAction)rotate:(UIButton *)button
{
// 提示:在OC中,所有跟角度相关的数值,都是弧度值 M_PI = 180度
// 正数顺时针旋转
// 负数逆时针旋转
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2];
if (button.tag) {
self.headImageView.transform = CGAffineTransformRotate(self.headImageView.transform, -M_PI_4);
} else {
self.headImageView.transform = CGAffineTransformRotate(self.headImageView.transform, M_PI_4);
}
[UIView commitAnimations];
}
@end
下面是全代码实现
//
// ViewController.m
// 按钮transform之全代码实现
#import "ViewController.h"
typedef enum
{
kMovingDirTop = 10,
kMovingDirBottom,
kMovingDirLeft,
kMovingDirRight
} kMovingDir;
@interface ViewController ()
@property (nonatomic,strong) UIButton *headImageView;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
_headImageView = [[UIButton alloc] init];
_headImageView.frame = CGRectMake(137, 74, 100, 100);
[_headImageView setTitle:@"Gem" forState:UIControlStateNormal];
[_headImageView setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
[_headImageView setBackgroundImage:[UIImage imageNamed:@"邓紫棋3"] forState:UIControlStateNormal];
[self.view addSubview:_headImageView];
[_headImageView setTitle:@"邓紫棋" forState:UIControlStateHighlighted];
[_headImageView setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted];
[_headImageView setBackgroundImage:[UIImage imageNamed:@"邓紫棋4"] forState:UIControlStateHighlighted];
[self.view addSubview:_headImageView];
UIButton *up = [[UIButton alloc] init];
up.frame = CGRectMake(57, 291, 40, 40);
up.tag = 10;
[up setBackgroundImage:[UIImage imageNamed:@"top_normal"] forState:UIControlStateNormal];
[self.view addSubview:up];
[up setBackgroundImage:[UIImage imageNamed:@"top_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:up];
[up addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside];
UIButton *down = [[UIButton alloc] init];
down.frame = CGRectMake(57, 387, 40, 40);
down.tag = 11;
[down setBackgroundImage:[UIImage imageNamed:@"bottom_normal"] forState:UIControlStateNormal];
[self.view addSubview:down];
[down setBackgroundImage:[UIImage imageNamed:@"bottom_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:down];
[down addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside];
UIButton *left = [[UIButton alloc] init];
left.frame = CGRectMake(16, 339, 40, 40);
left.tag = 12;
[left setBackgroundImage:[UIImage imageNamed:@"left_normal"] forState:UIControlStateNormal];
[self.view addSubview:left];
[left setBackgroundImage:[UIImage imageNamed:@"left_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:left];
[left addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside];
UIButton *right = [[UIButton alloc] init];
right.frame = CGRectMake(96, 339, 40, 40);
right.tag = 13;
[right setBackgroundImage:[UIImage imageNamed:@"right_normal"] forState:UIControlStateNormal];
[self.view addSubview:right];
[right setBackgroundImage:[UIImage imageNamed:@"right_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:right];
[right addTarget:self action:@selector(move:) forControlEvents:UIControlEventTouchUpInside];
UIButton *plus = [[UIButton alloc] init];
plus.frame = CGRectMake(167, 307, 40, 40);
plus.tag = 1;
[plus setBackgroundImage:[UIImage imageNamed:@"plus_normal"] forState:UIControlStateNormal];
[self.view addSubview:plus];
[plus setBackgroundImage:[UIImage imageNamed:@"plus_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:plus];
[plus addTarget:self action:@selector(zoom:) forControlEvents:UIControlEventTouchUpInside];
UIButton *minus = [[UIButton alloc] init];
minus.frame = CGRectMake(231, 307, 40, 40);
[minus setBackgroundImage:[UIImage imageNamed:@"minus_normal"] forState:UIControlStateNormal];
[self.view addSubview:minus];
[minus setBackgroundImage:[UIImage imageNamed:@"minus_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:minus];
[minus addTarget:self action:@selector(zoom:) forControlEvents:UIControlEventTouchUpInside];
UIButton *left_rotate = [[UIButton alloc] init];
left_rotate.frame = CGRectMake(167, 371, 40, 40);
left_rotate.tag = 1;
[left_rotate setBackgroundImage:[UIImage imageNamed:@"left_rotate_normal"] forState:UIControlStateNormal];
[self.view addSubview:left_rotate];
[left_rotate setBackgroundImage:[UIImage imageNamed:@"left_rotate_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:left_rotate];
[left_rotate addTarget:self action:@selector(rotate:) forControlEvents:UIControlEventTouchUpInside];
UIButton *right_rotate = [[UIButton alloc] init];
right_rotate.frame = CGRectMake(231, 371, 40, 40);
[right_rotate setBackgroundImage:[UIImage imageNamed:@"right_rotate_normal"] forState:UIControlStateNormal];
[self.view addSubview:right_rotate];
[right_rotate setBackgroundImage:[UIImage imageNamed:@"right_rotate_highlighted"] forState:UIControlStateHighlighted];
[self.view addSubview:right_rotate];
[right_rotate addTarget:self action:@selector(rotate:) forControlEvents:UIControlEventTouchUpInside];
}
- (void)move:(UIButton *)button
{
switch (button.tag) {
case kMovingDirTop:
self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, 0, -20);
break;
case kMovingDirBottom:
self.headImageView.transform= CGAffineTransformTranslate(self.headImageView.transform, 0, 20);
break;
case kMovingDirLeft:
self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, -20, 0);
break;
case kMovingDirRight:
self.headImageView.transform = CGAffineTransformTranslate(self.headImageView.transform, 20, 0);
break;
}
}
- (void)zoom:(UIButton *)button
{
if (button.tag) {
self.headImageView.transform = CGAffineTransformScale(self.headImageView.transform, 1.2, 1.2);
} else {
self.headImageView.transform = CGAffineTransformScale(self.headImageView.transform, 0.8, 0.8);
}
}
- (void)rotate:(UIButton *)button
{
if (button.tag) {
self.headImageView.transform = CGAffineTransformRotate(self.headImageView.transform, -M_PI_4);
} else {
self.headImageView.transform = CGAffineTransformRotate(self.headImageView.transform, M_PI_4);
}
}
@end