xcode 汤姆猫纯代码实现
#import "ViewController.h" @interface ViewController () @property(nonatomic,strong)UIImageView * tom; @property(nonatomic,strong)UIButton * btnAngry; @property(nonatomic,strong)UIButton * btnCymbal; @property(nonatomic,strong)UIButton * btnDrink; @property(nonatomic,strong)UIButton * btnEat; @property(nonatomic,strong)UIButton * btnFart; @property(nonatomic,strong)UIButton * btnFootRight; @property(nonatomic,strong)UIButton * btnFootLeft; @property(nonatomic,strong)UIButton * btnKnockout; @property(nonatomic,strong)UIButton * btnPie; @property(nonatomic,strong)UIButton * btnScratch; @property(nonatomic,strong)UIButton * btnStomach; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; /** 获取屏幕x,y,w,h的值,设置图片大小 */ CGFloat cgX=self.view.frame.origin.x; CGFloat cgY=self.view.frame.origin.y; CGFloat cgW=self.view.frame.size.width; CGFloat cgH=self.view.frame.size.height; CGFloat btnW=60; CGFloat btnH=60; NSLog(@"%@",self.view); //给图片容器初始化大小位置 self.tom=[[UIImageView alloc]initWithFrame:CGRectMake(cgX, cgY, cgW, cgH)]; //加载图片 self.tom.image=[UIImage imageNamed:@"tom"]; //添加的父容器中 [self.view addSubview:self.tom]; /** 创建UIButton按钮 */ //创建button按钮并且初始化大小位置 self.btnCymbal=[[UIButton alloc]initWithFrame:CGRectMake(0, cgH-btnH, btnW, btnH)]; //给按钮设置图片 [self.btnCymbal setImage:[UIImage imageNamed:@"cymbal"] forState:UIControlStateNormal]; //添加到父容器中 [self.view addSubview:self.btnCymbal]; // NSLog(@"%@",self.btnCymbal); 为测试位置用的 self.btnDrink=[[UIButton alloc]initWithFrame:CGRectMake(0, self.btnCymbal.frame.origin.y-btnH, btnW, btnH)]; [self.btnDrink setImage:[UIImage imageNamed:@"drink"] forState:UIControlStateNormal]; [self.view addSubview:self.btnDrink]; // NSLog(@"%@",self.btnDrink); self.btnEat=[[UIButton alloc]initWithFrame:CGRectMake(0, self.btnDrink.frame.origin.y - btnH, btnW, btnH)]; [self.btnEat setImage:[UIImage imageNamed:@"eat"] forState:UIControlStateNormal]; [self.view addSubview:self.btnEat]; self.btnFart=[[UIButton alloc]initWithFrame:CGRectMake(cgW-btnH, cgH-btnH, btnW, btnH)]; [self.btnFart setImage:[UIImage imageNamed:@"fart"] forState:UIControlStateNormal]; [self.view addSubview:self.btnFart]; // NSLog(@"%@",self.btnFart); self.btnPie=[[UIButton alloc]initWithFrame:CGRectMake(self.btnFart.frame.origin.x, self.btnFart.frame.origin.y-btnH, btnW , btnH)]; [self.btnPie setImage:[UIImage imageNamed:@"pie"] forState:UIControlStateNormal]; [self.view addSubview:self.btnPie]; // NSLog(@"%@",self.btnPie); self.btnScratch=[[UIButton alloc]initWithFrame:CGRectMake(self.btnPie.frame.origin.x, self.btnPie.frame.origin.y-btnH, btnW, btnH)]; [self.btnScratch setImage:[UIImage imageNamed:@"scratch"] forState:UIControlStateNormal]; [self.view addSubview:self.btnScratch]; //尾巴 self.btnAngry=[[UIButton alloc]initWithFrame:CGRectMake(251, 485, 40, 123)]; [self.view addSubview:self.btnAngry]; //头部 self.btnKnockout=[[UIButton alloc]initWithFrame:CGRectMake(43,109 , 295, 220)]; [self.view addSubview:self.btnKnockout]; //右脚 self.btnFootRight=[[UIButton alloc]initWithFrame:CGRectMake(117, 605, 62, 42)]; [self.view addSubview:self.btnFootRight]; //左脚 self.btnFootLeft=[[UIButton alloc]initWithFrame:CGRectMake(192, 605, 62, 42)]; [self.view addSubview:self.btnFootLeft]; //肚子 self.btnStomach =[[UIButton alloc]initWithFrame:CGRectMake(123, 471, 128, 95)]; [self.view addSubview:self.btnStomach]; /** 给按钮添加事件 */ [self.btnCymbal addTarget:self action:@selector(cymbal) forControlEvents:UIControlEventTouchUpInside]; [self.btnDrink addTarget:self action:@selector(drink) forControlEvents:UIControlEventTouchUpInside]; [self.btnEat addTarget:self action:@selector(eat) forControlEvents:UIControlEventTouchUpInside]; [self.btnFart addTarget:self action:@selector(fart) forControlEvents:UIControlEventTouchUpInside]; [self.btnPie addTarget:self action:@selector(pie) forControlEvents:UIControlEventTouchUpInside]; [self.btnScratch addTarget:self action:@selector(scratch) forControlEvents:UIControlEventTouchUpInside]; [self.btnAngry addTarget:self action:@selector(angry) forControlEvents:UIControlEventTouchUpInside]; [self.btnKnockout addTarget:self action:@selector(knockout) forControlEvents:UIControlEventTouchUpInside]; [self.btnFootRight addTarget:self action:@selector(footRight) forControlEvents:UIControlEventTouchUpInside]; [self.btnFootLeft addTarget:self action:@selector(footLeft) forControlEvents:UIControlEventTouchUpInside]; [self.btnStomach addTarget:self action:@selector(stomach) forControlEvents:UIControlEventTouchUpInside]; } -(void)stomach{ [self runPlayCount:33 toFileName:@"stomach"]; } /** 左脚 */ -(void)footLeft{ [self runPlayCount:29 toFileName:@"footLeft"]; } /** 右脚 */ -(void)footRight{ [self runPlayCount:29 toFileName:@"footRight"]; } /** 晕倒 */ -(void)knockout{ [self runPlayCount:80 toFileName:@"knockout"]; } /** 生气 */ -(void)angry{ [self runPlayCount:25 toFileName:@"angry"]; } /** 敲东西 */ -(void)cymbal{ [self runPlayCount:12 toFileName:@"cymbal"]; } /** 喝东西 */ -(void)drink{ [self runPlayCount:80 toFileName:@"drink"]; } /** 吃东西 */ -(void)eat{ [self runPlayCount:39 toFileName:@"eat"]; } /** 放屁 */ -(void)fart{ [self runPlayCount:27 toFileName:@"fart"]; } /** 砸东西 */ -(void)pie{ [self runPlayCount:23 toFileName:@"pie"]; } /** 猫爪 */ -(void)scratch{ [self runPlayCount:55 toFileName:@"scratch"]; } /** 定义播放动画传入图片个数和图片名称 */ -(void)runPlayCount:(int)count toFileName:(NSString *)name{ //定义一个可变数组装图片 NSMutableArray * arrM=[NSMutableArray array]; for (int i=0; i<=count; i++) { //根据图片名称获取图片绝对路径 NSString * fileName=[[NSBundle mainBundle]pathForResource:[NSString stringWithFormat:@"%@_%02d",name,i] ofType:@"jpg"]; //根据路径获取图片 UIImage * image=[UIImage imageWithContentsOfFile:fileName]; //将图片添加到数组中 [arrM addObject:image]; } //加载动画图片 self.tom.animationImages=arrM; //设置播放次数 self.tom.animationRepeatCount=1; //设置播放时间 self.tom.animationDuration=arrM.count*0.05 ; //播放 [self.tom startAnimating]; //播放完后释放对象 就是将对象设置nil [self.tom performSelector:@selector(setAnimationImages:) withObject:nil afterDelay:self.tom.animationDuration]; } @end