因为除了上下左右旋转按钮,缩放这些实现方法不一样,他们的实现动画功能都是一样的,所以这里可以把他们实现动画功能提出来,用力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