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