2010-06-28 119 views
0

我試圖實現一個可以通過三個或更多圖像重複循環的可點擊圖像。一旦循環設置完成,我不需要與圖像進行交互。騎車是基於時間的,而不是基於事件的。圖像應該平滑過渡。iOS中的3個圖像之間的交叉淡入淡入淡出

解決此問題的最佳方法是什麼?

我的第一種方法是使用單一方法的有限狀態機,並使用該方法的選擇器連鎖UIView動畫塊。由於[button setImage:nextImage forState:UIControlStateNormal]沒有動畫,因此失敗。

我的第二種方法是看CABasicAnimation和圖層。這似乎是一個更低層次的方法,但我看不到將過渡鏈接在一起的方式(例如,一旦此操作完成,就設置下一個動作)。

我的感覺是接近使用多個按鈕並在它們之間淡化是明顯錯誤的,但我不確定下一步該去哪裏。

如何在UIButton中的圖像之間平滑淡化?

如何將這些轉換鏈接在一起?

什麼是正確的方法?

編輯: 的圖像I1,I2,I3必要去序列I1 - > I2 - > I3 - > I2 - > I1 - > I2 - > I3等

回答

0

我的解決辦法:

  • 有一個UIButton和容器UIView
  • 容器UIView包含所有圖像作爲UIImageView子視圖。
  • 在UIViewController的viewDidAppear方法中啓動動畫,其中所有子視圖都將Alpha設置爲1.0。然後將第0個imageView alpha設置爲1.0。
  • 完成動畫播放後,請回想一下相同的方法,它會設置延遲
  • 並照顧下一張圖像的動畫。

我不知道這是否是做事的正確方法,但它似乎是一個很多比其他整潔 -

  • 所有的圖像可以在Interface Builder中設置了無的任何污染代碼中的圖像名稱。
  • 該方法是自包含的,內存管理無憂無慮。
4

我首先想到的是UIImageView.animationImages ,但我認爲它不支持褪色。

請勿使用UIButton來顯示圖像;只要將它作爲處理繪圖的其他東西的頂部的隱形按鈕即可。

要做動畫的簡單方法之一是使用兩個圖像視圖:將「淡入」圖像視圖移動到前面(-[UIView bringSubviewToFront:])將其alpha設置爲0,然後將其alpha設置爲1。

-3

我相當確信這樣的事情會工作:

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:duration]; 

[button setImage:whicheverImage forState:UIControlStateNormal]; 

[UIView commitAnimations]; 

應該淡出順暢通過,如果你給它的,也許0.5(秒)的持續時間。

+1

有一些操作不會按預期設置動畫,例如, button.hidden = YES; setImage及其相關屬性是另一個。 – jamesh 2010-07-05 09:41:11

+0

很高興知道 - 抱歉的錯誤信息。 – Luke 2010-07-07 19:01:13