2014-02-06 33 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]'停止計時器。 –