一:首先我们看一下这个运行时的主界面,程序一启动就要呈现的的图片需要放在Assets.xcassets里,

    用于动画帧的图片放在supporting Files里

 1.里面的小图片都是Button,还有在肚子上和头上的隐藏的Button;

 2.底部是一个ImageView,放着一张Tom的图片

       imageView和Button直接在storyboard中拖过去,不要忘记建立连线(很初学者不明白为什么有的需要连线,有的不需要,在这里解释一下,如果你在代码中需要更改,或是用        到控件的属性时,就需要建立连线,创建可用对象)



二:下面我们来看看代码

以drink为例:drink_%02d.jpg 表示存放的drink_01~drink_81,大家也可以用其他的图片素材试试看

IBAction)drinkButton:(id)sender {
     //首先创建一个数组存放图片对象
    NSMutableArray * Array1=[NSMutableArrayarray];
     
    //使用for循环加载图片
for(int i=0;i<81;i++)
     {
//获取文件名
NSString *fileName = [NSStringstringWithFormat:@"drink_%02d.jpg",i];
//获取文件目录
NSString*path=[[NSBundlemainBundle]pathForResource:fileNameofType:nil];
//获取图片对象
UIImage*image=[UIImageimageWithContentsOfFile:path];
        //把图片插到可变数组
addObject:image];
     }
//动画
    //设置图片动画
    self.mainPhotoView.animationImages=Array1;
     //设置动画播放的次数
    self.mainPhotoView.animationRepeatCount =1;
     //设置动画播放时长
    self.mainPhotoView.animationDuration =self.mainPhotoView.animationImages.count *0.07;
    //开始播放
    [self.mainPhotoViewstartAnimating];
     
    //计算动画时间
    CGFloat time=self.mainPhotoView.animationDuration+0.1;
     //释放内存,延时执行
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(time * NSEC_PER_SEC)),dispatch_get_main_queue(), ^{
        self.mainPhotoView.animationImages=nil;
     });
 
 } 
其他的功能实现和这个类似,所以我们只需要把上面的代码复制,粘贴在其他的Button里,更改一下图片名和数量就可以实现其他功能,但是这样显得程序代码繁杂,代码数量大,所以此时我们需要封装一下,将其写在一个方法里,然后调用就好了
 
方法如下:(把name和count图片数量变成了可传递的参数)
 
 
 
 
void)PAimageName:(NSString*) name imageCount:(int) count{
 
if ([self.mainPhotoViewisAnimating]) {
return;
     }
     
     //首先创建一个数组存放图片对象
    NSMutableArray * Array1=[NSMutableArrayarray];
     
    //使用for循环加载图片
for(int i=0;i<count;i++)
     {
//获取文件名
NSString *fileName = [NSStringstringWithFormat:@"%@_%02d.jpg",name,i];
//获取文件目录
NSString*path=[[NSBundlemainBundle]pathForResource:fileNameofType:nil];
//获取图片对象
UIImage*image=[UIImageimageWithContentsOfFile:path];
        //把图片插到可变数组
addObject:image];
     }
//动画
    //设置图片动画
    self.mainPhotoView.animationImages=Array1;
     //设置动画播放的次数
    self.mainPhotoView.animationRepeatCount =1;
     //设置动画播放时长
    self.mainPhotoView.animationDuration =self.mainPhotoView.animationImages.count *0.07;
    //开始播放
    [self.mainPhotoViewstartAnimating];
     
    //计算动画时间
    CGFloat time=self.mainPhotoView.animationDuration+0.1;
     //释放内存,延时执行
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(time * NSEC_PER_SEC)),dispatch_get_main_queue(), ^{  
        self.mainPhotoView.animationImages=nil;
     });
 
 }

然后把这个方法在Button里执行就好了




还是很有意思的,主要都是通过Button实现的