IOS开发进阶-按钮属性操作

来源:互联网 发布:聊天室程序源码 编辑:程序博客网 时间:2024/06/14 15:54

本案例主要的作用是进行按钮属性的操作,通过按钮属性的操作来进行图片的旋转,放大,缩小

左移动,右移动,上移动,下移动

最后并进行了代码重构,利用block。

#define kDelta 30@interface WSLViewController : UIViewController@property (weak, nonatomic) IBOutlet UIButton *display;- (IBAction)transfers:(id)sender;- (IBAction)lefmapRotate:(id)sender;- (IBAction)rightRotate:(id)sender;- (IBAction)zoomBig:(id)sender;- (IBAction)scaleSmall:(id)sender;@end

@implementation WSLViewController#pragma mark map移动,重构前- (IBAction)up:(id)sender {    //oc语法规定:不允许直接修改 某个对象结构体属性的成员    //动画    [UIView beginAnimations:nil context:nil];    //设置动画的执行时间    [UIView setAnimationDuration:0.5];    //取出frame    CGRect tempframe=_display.frame;    //修改y值    tempframe.origin.y-=30;        //重新赋值到按钮到frame    _display.frame=tempframe;        //动画尾部    [UIView commitAnimations];        NSLog(@"=shang=");}- (IBAction)left:(id)sender {    //oc语法规定:不允许直接修改 某个对象结构体属性的成员    //动画    [UIView beginAnimations:nil context:nil];    //设置动画的执行时间    [UIView setAnimationDuration:0.5];    //取出frame    CGRect tempframe=_display.frame;    //修改y值    tempframe.origin.x-=30;        //重新赋值到按钮到frame    _display.frame=tempframe;        //动画尾部    [UIView commitAnimations];        }- (IBAction)right:(id)sender {        //oc语法规定:不允许直接修改 某个对象结构体属性的成员    //动画    [UIView beginAnimations:nil context:nil];    //设置动画的执行时间    [UIView setAnimationDuration:0.5];    //取出frame    CGRect tempframe=_display.frame;    //修改y值    tempframe.origin.x+=30;        //重新赋值到按钮到frame    _display.frame=tempframe;        //动画尾部    [UIView commitAnimations];}- (IBAction)down:(id)sender {        //oc语法规定:不允许直接修改 某个对象结构体属性的成员    //动画    [UIView beginAnimations:nil context:nil];    //设置动画的执行时间    [UIView setAnimationDuration:0.5];    //取出frame    CGRect tempframe=_display.frame;    //修改y值    tempframe.origin.y+=30;        //重新赋值到按钮到frame    _display.frame=tempframe;        //动画尾部    [UIView commitAnimations];}#pragma mark map移动,重构后//代码重构- (IBAction)transfers:(id)sender {    //oc语法规定:不允许直接修改 某个对象结构体属性的成员    //动画    [UIView beginAnimations:nil context:nil];    //设置动画的执行时间    [UIView setAnimationDuration:0.5];    //取出frame    CGRect tempframe=_display.frame;    int tag=[sender tag];    switch (tag) {        case 1:            //修改y值            tempframe.origin.y-=kDelta;            break;        case 2:            //修改x值            tempframe.origin.x+=kDelta;            break;        case 3:            //修改y值            tempframe.origin.y+=kDelta;            break;        case 4:            //修改x值            tempframe.origin.x-=kDelta;            break;        default:            break;    }    //重新赋值到按钮到frame    _display.frame=tempframe;    //动画尾部    [UIView commitAnimations];    }#pragma mark map旋转- (IBAction)lefmapRotate:(id)sender {    //弧度    [UIView beginAnimations:nil context:nil];    [UIView setAnimationDuration:0.5];   _display.transform =CGAffineTransformRotate(_display.transform, -M_PI_4);    [UIView commitAnimations];}- (IBAction)rightRotate:(id)sender {    //弧度    [UIView beginAnimations:nil context:nil];    [UIView setAnimationDuration:0.5];    _display.transform =CGAffineTransformRotate(_display.transform, M_PI_4);    [UIView commitAnimations];}- (IBAction)zoomBig:(id)sender {    [UIView beginAnimations:nil context:nil];    [UIView setAnimationDuration:0.5];        _display.transform=CGAffineTransformScale(_display.transform, 1.2, 1.2);        [UIView commitAnimations];}- (IBAction)scaleSmall:(id)sender {    [UIView beginAnimations:nil context:nil];    [UIView setAnimationDuration:0.5];    _display.transform=CGAffineTransformScale(_display.transform, 0.8, 0.8);        [UIView commitAnimations];}@end


代码重构后,如下:

#define kDelta 30@interface WSLViewController : UIViewController@property (weak, nonatomic) IBOutlet UIButton *display;- (IBAction)transfers:(id)sender;- (IBAction)lefmapRotate:(id)sender;- (IBAction)rightRotate:(id)sender;- (IBAction)zoomBig:(id)sender;- (IBAction)scaleSmall:(id)sender;@end





////  WSLViewController.m//  tupian////  Created by 王胜利 on 14-3-30.//  Copyright (c) 2014年 wsl. All rights reserved.//#import "WSLViewController.h"@implementation WSLViewController//代码重构//利用bock进行重构代码-(void)btnClick:(id)sender block:(void (^)())block{    [UIView beginAnimations:nil context:nil];    //设置动画的执行时间    [UIView setAnimationDuration:0.5];    block();     [UIView commitAnimations];}#pragma mark map移动,重构后//代码重构- (IBAction)transfers:(id)sender {    [self btnClick:sender block:^{        CGRect tempframe=_display.frame;        int tag=[sender tag];        switch (tag) {            case 1:                //修改y值                tempframe.origin.y-=kDelta;                break;            case 2:                //修改x值                tempframe.origin.x+=kDelta;                break;            case 3:                //修改y值                tempframe.origin.y+=kDelta;                break;            case 4:                //修改x值                tempframe.origin.x-=kDelta;                break;            default:                break;        }        //重新赋值到按钮到frame        _display.frame=tempframe;    }];}#pragma mark map旋转- (IBAction)lefmapRotate:(id)sender {    [self btnClick:sender block:^{         _display.transform =CGAffineTransformRotate(_display.transform, -M_PI_4);    }];}- (IBAction)rightRotate:(id)sender {    [self btnClick:sender block:^{          _display.transform =CGAffineTransformRotate(_display.transform, M_PI_4);    }];}- (IBAction)zoomBig:(id)sender {    [self btnClick:sender block:^{          _display.transform=CGAffineTransformScale(_display.transform, 1.2, 1.2);    }];}- (IBAction)scaleSmall:(id)sender {    [self btnClick:sender block:^{        _display.transform=CGAffineTransformScale(_display.transform, 0.8, 0.8);    }];}@end


0 0
原创粉丝点击