利用Button實現移動, 縮放, 旋轉, 重設等功能.

來源:互聯網
上載者:User

標籤:style   blog   http   color   io   os   ar   使用   for   

在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實現移動, 縮放, 旋轉, 重設等功能.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.