UI基础-day02-帧动画-02抽取重复代码

UI基础-day02-帧动画-01基本实现

效果图

UI基础-day02-帧动画-02抽取重复代码_第1张图片

需求

  1. 程序一启动就执行"站立"动画
  2. "大招"动画执行完成后,执行"站立"动画
- (void)viewDidLoad {
    [super viewDidLoad];
    [self layoutUI]; // 界面布局
    [self btnStandClick]; // 程序一启动就加载站立,且只执行一次.
}
-(void)btnStandClick{
    [self animation:@"stand" andImageCount:10];
}
// 抽取重复代码,'大招'和'站立',通过传入的名称不同,进行分辨.
-(void)animation:(NSString *) prefixImage andImageCount:(int)count{
    NSMutableArray *imgMArray = [NSMutableArray  array];
    for (int i=0; i< count; i++) {
        NSString *str  = [NSString stringWithFormat:@"%@_%d",prefixImage,i+1];
        UIImage *img = [UIImage imageNamed:str];
        [imgMArray addObject:img];
    }
    self.imgViewTemp.animationImages = imgMArray; //需要显示的图片
    // 执行次数 如果是"stand",则一直执行,否则只执行一次!
    self.imgViewTemp.animationRepeatCount = [prefixImage isEqualToString:@"stand"] ? 0 : 1;
    self.imgViewTemp.animationDuration = count*0.1;// 多少时间内执行完.
    [self.imgViewTemp startAnimating];  // 开始执行动画
    // 存在一种情况,先点击'大招','大招'结束后站立,然后一直站立...
    // 可是点击站立了,就不需要再执行'站立'的方法了.
    if ([prefixImage isEqualToString:@"stand"]) {
        return;
    }
    //当X秒后,执行当前(self)的btnStandClick方法
    [self performSelector:@selector(btnStandClick) withObject:nil afterDelay:self.imgViewTemp.animationDuration];
}

划重点

  1. 巧用三目运算
    // 执行次数 如果是"stand",则一直执行,否则只执行一次!
    self.imgViewTemp.animationRepeatCount = [prefixImage isEqualToString:@"stand"] ? 0 : 1;
  2. 多少秒后,执行什么事件?



    UI基础-day02-帧动画-02抽取重复代码_第2张图片

你可能感兴趣的:(UI基础-day02-帧动画-02抽取重复代码)