需求:頁面上有個按鈕,用戶要求當手指按下這個按鈕的時候,在這個按鈕的周圍出現一個旋轉的圓圈,當松開手指后這個動畫消失。
具體的頁面布局和事件綁定的方式我就不再描述了。這里只說一下需要幫定的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 }