需求:页面上有个按钮,用户要求当手指按下这个按钮的时候,在这个按钮的周围出现一个旋转的圆圈,当松开手指后这个动画消失。
具体的页面布局和事件绑定的方式我就不再描述了。这里只说一下需要帮定的UIButton的事件吧,压下的方法要绑定的UIButton事件是的Touch Down,松开的方法要绑定的UIButton事件是Touch Up Inside和Touch Up Outside(如果你想当手指离开按钮的时候就取消动画的播放,你需要在绑定Touch Drag Outside事件)
具体的代码如下:
1 -(void)pressedEvent:(id)sender {//按钮的压下事件的响应方法 2 UIButton *btn = sender; 3 NSArray *imgArray = [NSArray arrayWithObjects:[UIImage imageNamed:@"anim_0"],[UIImage imageNamed:@"anim_1"],[UIImage imageNamed:@"anim_2"],[UIImage imageNamed:@"anim_3"],nil];//定义一个动画的帧数组 4 UIImageView *animImgView = [[UIImageView alloc]init];//初始化一个UIImageView用于逐帧播放我们的动画 5 animImgView.frame = CGRectMake(0, 0, ((UIImage*)[imgArray objectAtIndex:0]).size.width, ((UIImage*)[imgArray objectAtIndex:0]).size.height);//这里默认认为动画的每帧大小是一致的,顾取出第一个图片的大小来作为UIImageView的大小 6 animImgView.center = btn.center;//上边只是这是了UIImageView的大小,这里设置他的摆放位置,让动画的中心点和按钮的中心点重叠 7 animImgView.tag = 10000;//设置这个是为了在压下的按钮触发的释放动作中获取到这个播放动画的UIImageView 8 animImgView.animationImages = imgArray; //将逐帧动画的数组传递给UIImageView 9 animImgView.animationDuration = 1; //浏览所有图片一次所用的时间 10 animImgView.animationRepeatCount = 0; // 0 = loops forever 动画重复次数 11 [animImgView startAnimating]; //开始播放动画 12 [self.view addSubview:animImgView]; //添加视图到窗体中 13 [self.view sendSubviewToBack:animImgView];//将动画播放的视图移到elf.view的最底层,这里需要注意图层遮挡问题 14 [animImgView release]; 15 } 16 -(void)unpressedEvent:(id)sender {//按钮的松开事件的响应方法 17 [[self.view viewWithTag:10000] removeFromSuperview]; 18 }