标签:
用storyboard来创建汤姆猫为例。
准备工作:素材中的照片放置位置。经常用到而且占用内存比较小的图片建议放到images xcassets里面,不经常用、占内存大的图片一般放到 Supporting Files文件里面。
重构-抽取代码:
1 把将重复代码复制到新的方法中。
2 根据需要调整参数。
#import "ViewController"
@interface ViewControll ()
@property(nonatomic,weak)tom;
@end
@implementation ViewController
-(IBAction)knockout
{
//调用方法并出入参数knockout是照片名字的前部knockout_00.jpg,81为照片数量。
[self tomWithName:@"knockout" andCount:81];
}
-(IBAction)eat
{
//调用方法并出入参数
[self tomWithName:@"eat" andCount:40];
}
-(void)tomWithName:(NSString *)name andCount(NSInteger)count1
{
//就行判断,如果动画正在播放就不能执行下一个动画。这样保证动画播放完整。
if([self.tom isAnimating])return;
//1创建可变数组用来储存照片名字
NSMutableArray *array=[NSMutableArray array];
//2遍历取得照片名字,然后取出照片,然后把照片添加到数组里
fpr(int i=0;i<count1;i++){
//NSString *name=[NSString stringWitfFormat:@"%@_%02d.jpg”name,i]; //这里的%02d是十位不足补零。例: 07 。
//UIImage *imageName=[UIImage imageNamed:name];
NSString *path=[[NSBoundle mainBoundle] pathForResource:nameofType:nil];
UIImage *imageName=[UIImage imageWithCountentsOfFle:path];
[array addObjiect:imageName];
}
//实现动画
//1添加动画照片
self.tom.animationImages=array;
//2设置动画播放次数
self.tom.animationRepeatCount=1;
//3设置动画播放时常,0.75是自己觉得这个速度播放动画正好。
self.tom.animationDuraion=count1*0.75
//4动画开始
[self.tom start Animating];
// (动画数组 . ) (数组清空) (动画播放总时间 .)
[self.tom performSelector:@selector(setAnimationImage) withObject:nil afterDalay:self.tom.animation];//动画播放完了对当前图片数组进行释放。
}
@end
imageNamed:系统推荐使用的(UIImage imageNamed:(UIImage *)),图片实例化后内存由系统来释放(缓存)。
如果需要手动释放内存级需要使用 imageWithContentsOfFile(UIImage imageWithContentsOfFile:全路径)。
只有存放在Supporting Files中的图片才可以使用imageWithContentsOfFile。
小方法:currentTitle可以取出当前按钮的title内容
所以可以把eat和knockout方法合并(把按钮的title输入照片名字前部比如eat、knockout.把tag设成照片张数)
-(IBAction)tomAnimation:(UIBtton*)sender
{
[self tomWithName:currentTitle andCount:sender.tag ];
}
标签:
原文地址:http://www.cnblogs.com/SuperMan1/p/4464395.html