2014-02-06 34 views
-1

以下用例突出显示的状态:的UIButton与具有多于1步骤

有被示出的UIButton上这使得该应用的主要用例在屏幕的底部。如果用户第一次在应用程序中登录,我想通过将其设置为突出显示状态来显示该按钮的动画。但是 - 我希望动画至少具有4种状态(按钮上有不同颜色的圆环) - 在高光动画期间,我想在快速动画中添加每个状态1环)

任何一个想法该怎么做?

(我不想使用一个单独的ImageView为)

UPDATE:

THX的帮助 - 我已经找到了有效的解决方案。

我有子类UIButton并覆盖了setHighlighted:(BOOL)highlighted方法。在方法内部,我有一个检查,如果我想使用自定义突出显示。我adjustsImageWhenHighlighted = NO

完美的作品:

的突出本身是由..

[UIView transitionWithView:self.imageView duration:0.1f options:UIViewAnimationOptionTransitionCrossDissolve animations:^{ self.imageView.image = [UIImage imageNamed:@"xyz.png"]; } completion:^(BOOL finished) { if(finished)..

重要完成。

+0

使用单独的UIImageView。 : - )你为什么不想这样做? –

+0

也为UIImageView,我还没有找到完美的解决方案,然后真的看起来很惊人 - 但总的来说 - 我宁愿使用UIButton子类的清洁解决方案,我想 –

+0

你有干净的解决方案做到这一点一个imageView? –

回答

0

创建一个整数(NSInteger)属性timerValue并将其初始化为0viewDidLoad

还可以创建一个NSTimer,无论你想开始你的动画,并安排它来调用一个选择,你希望你的动画帧之间各有200毫秒或任何时间延迟:

NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.2f 
                target:self 
               selector:@selector(handleTimer) 
               userInfo:nil 
                repeats:YES]; 

然后更改按钮的图像取决于每次handleTimertimerValue被称为:

-(void)handleTimer 
{ 
    switch (self.timerValue) 
    { 
     case 0 : 
      //load your frame 0 image on button 
     break; 
     case 1 : 
      //load your frame 1 image on button 
     break; 
     case 2 : 
      //load your frame 2 image on button 
     . 
     . 
     . 
     //etc 
    } 
    self.timerValue = self.timerValue+1; 
} 
+0

您还可以添加一个最后一个案例并使用'[self.timer invalidate]'停止计时器。 –