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

 

posted on 2015-02-06 17:58  Holy_Mac  阅读(196)  评论(0编辑  收藏  举报

导航