首页 > 代码库 > 利用Button实现移动, 缩放, 旋转, 重置等功能.

利用Button实现移动, 缩放, 旋转, 重置等功能.

在UIView里面有一个叫做Button的View, 这个控件简单来说就是点击, 就是手机上我们一切可以点击的东西都是Button, 现在我们利用这一个控件来实现上面等更能.

 

PS: 方法和注释都在文件工程里面, 你们可以下载下来运行一下试试, 这里我就只写代码了.

关于怎么使用UIButton, 各位可以去百度一下, 有专门视频讲解, 这里贴图比较麻烦, 不好操作, 请谅解.

ViewController.h声明所有的方法.

#import <UIKit/UIKit.h>@interface ViewController : UIViewController//声明被控制的UIButton的属性.@property (weak, nonatomic) IBOutlet UIButton *btn;//声明上下左右的移动方法.- (IBAction)button:(id)sender;//声明缩放方法.- (IBAction)scale:(id)sender;//声明旋转的方法.- (IBAction)rotate:(id)sender;//初始化Button.- (IBAction)initialize:(id)sender;@end

ViewController.m文件, 实现所有的方法.

#import "ViewController.h"//也可以创建一个宏, 这样子更加方便一些, 不用浪费内存空间.#define kDelta 10@interface ViewController ()@end@implementation ViewController- (void)btnCilickWithblock:(void (^)())block{    //动画准备开始    [UIView beginAnimations:nil context:nil];    //动画运行的时间    [UIView setAnimationDuration:1.0f];    //实现方法.    block();    //运行动画.    [UIView commitAnimations];}#pragma mark 控制按钮走动 (上下左右)- (IBAction)button:(id)sender{    [self btnCilickWithblock:^{        //这里除了用frame, 还可以使用center        CGRect frame = _btn.frame;//        CGPoint tmpcenter = _btn.center;        //为什么使用CGFloat呢, 因为origin是继承与CGRect, CGRect又是浮点类型, 所以要使用CGFloat.        //    CGFloat dale = 50;        //可以使用switch方法, 也可以使用if判断方法, 按照个人喜欢.        //由于sender是id类型, 不能使用.操作符, 所以只能用get方法.        switch ([sender tag]) {            case 1:                frame.origin.y -= kDelta;                if(frame.origin.y <= 10)                {                    frame.origin.y = 0;                }//                tmpcenter.y -= kDelta;                break;            case 2:                frame.origin.x += kDelta;                if(frame.origin.x >= 210)                {                    frame.origin.x = 220;                }//                tmpcenter.x += kDelta;                break;            case 3:                frame.origin.y += kDelta;                if(frame.origin.y >= 458)                {                    frame.origin.y = 468;                }//                tmpcenter.y += kDelta;                break;            case 4:                frame.origin.x -= kDelta;                if(frame.origin.x <= 10)                {                    frame.origin.x = 0;                }//                tmpcenter.x -= kDelta;                break;            default:                break;        }        _btn.frame = frame;//        _btn.center = tmpcenter;    }];}#pragma mark 旋转- (IBAction)rotate:(id)sender {    //弧度 3.14 - π    //角度 180    //这里系统已经给我们定义好了一个宏.    //逆时针旋转在宏的前面加上-操作符, 否则就是+操作符.    //这里的M_PI_4意思就是旋转45°.    //    _btn.transform = CGAffineTransformMakeRotation(-M_PI_4);    [self btnCilickWithblock:^{        if (5 == [sender tag])        {            _btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_2 * - 1);        }        else if(6 == [sender tag])        {            _btn.transform = CGAffineTransformRotate(_btn.transform, M_PI_2 * 1);        }    }];}#pragma mark 缩放- (IBAction)scale:(id)sender{    [self btnCilickWithblock:^{        //使用三目运算符来判断是哪个按钮.        CGFloat scale = [sender tag] == 7? 1.2: 0.8;        //判断按钮标签.        if([sender tag] == 7)        {            _btn.transform = CGAffineTransformScale(_btn.transform, scale, scale);        }        else if ([sender tag] == 8)        {            _btn.transform = CGAffineTransformScale(_btn.transform, scale, scale);        }    }];}#pragma mark 初始化- (IBAction)initialize:(id)sender {    [self btnCilickWithblock:^{        //初始化之前所有的形变属性.        _btn.transform = CGAffineTransformIdentity;    }];}@end

 

工程下载地址:

http://files.cnblogs.com/iOSCain/%E6%8C%89%E9%92%AE%E7%9A%84%E7%8A%B6%E6%80%81.zip

 

利用Button实现移动, 缩放, 旋转, 重置等功能.