实现一个简单的按钮实例-上下左右,左旋转,右旋转,放大缩小。代码重构

因为除了上下左右旋转按钮,缩放这些实现方法不一样,他们的实现动画功能都是一样的,所以这里可以把他们实现动画功能提出来,用力block(代码块)。(就类似上下左右移动,左右旋转,伸缩等也是把他们相同的地方包装在一起,在UIView里面把四个按钮拖在到一个方法里面,把左右旋转也拖拽到一个方法里面,把伸缩拖拽到一个方法里面,然后用tag来识别是要操作那个按钮。)  下面来实现block。不过在使用b
摘要由CSDN通过智能技术生成

因为除了上下左右旋转按钮,缩放这些实现方法不一样,他们的实现动画功能都是一样的,所以这里可以把他们实现动画功能提出来,用力block(代码块)。(就类似上下左右移动,左右旋转,伸缩等也是把他们相同的地方包装在一起,在UIView里面把四个按钮拖在到一个方法里面,把左右旋转也拖拽到一个方法里面,把伸缩拖拽到一个方法里面,然后用tag来识别是要操作那个按钮。)  下面来实现block。

不过在使用block前,也可以用方法

把动画开始的两句写在一个方法里面,然后用self调用这个方法

- (void)start{

    //实现动画

    [ UIViewbeginAnimations:nilcontext:nil];


    //设置动画执行时间

    [UIViewsetAnimationDuration:2.0];

}

把介绍写在另外一个方法里面,同样用self调用

- (void)end{

   [UIViewcommitAnimations];

}

然后再之前写这两个方法的地方,替换上面的方法。


二、也可以用函数


void start(){

//实现动画

    [ UIViewbeginAnimations:nilcontext:nil];


    //设置动画执行时间

    [UIViewsetAnimationDuration:2.0];

}

void end(){

 [UIViewcommitAnimations];

}

上面的方法也是比较冗余。


三、用block方法

//

//  ViewController.m

//  ios练习-qq登录

//

//  Created by 陈军 on 16/3/15.

//  Copyright (c) 2016 陈军. All rights reserved.

//


#import "ViewController.h"


#define kdelta 20

@interface ViewController ()


@end


@implementation ViewController


// 比较冗余

//void start(){

    //实现动画

//    [ UIView beginAnimations:nil context:nil];


    //设置动画执行时间

//    [UIView setAnimationDuration:2.0];

    

//}


//void end(){

 //    [UIView commitAnimations];

//}




#pragma mark block来提出动画的

//(id)sender 就是tag,要点击哪个按钮,就传进来

// 要使用这个block把代码块封装起来,就是因为下面的上下左右,旋转,伸缩,他们的动画代码都是一样的,所以用block把代码块抽出来,然后把用self调用这个方法

//- (void)btnClick:(id)sender block:(void(^)())block,本来是要用这个的,但是这里不需要调用tag,所以就不用写了这个了

- (void)btnClickWithBlock:(void(^)())block{


    //(void(^)())block 为什么要这么写得,正常定义block void (^block) ()  最后面的括号为空的话,可以省略但是这里为什么要这样写呢(void(^)())block 分来来写,void(^)())是类型,然后把void(^block)())中的block放在右边,所以就是(void(^)())block这个了



    //实现动画

    [UIView beginAnimations:nil context:nil];


    //设置动画执行时间

    [UIView setAnimationDuration

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值