0

雖然與UIView animation玩弄,我碰到一個情況,我覺得需要一些重構:的iOS:UIView的動畫重構

以下視圖,其opacity初始設置爲0.0f

例:

[UIView animateWithDuration:1.0f 
       animations:^ 
       { 
        firstView.layer.opacity = 1.0f; 
       } 
       completion:^(BOOL finished) 
       { 
        [UIView animateWithDuration:1.0f 
             animations:^ 
         { 
          secondView.layer.opacity = 1.0f; 
          firstView.layer.opacity = 0.0f; 
         } 
         completion:^(BOOL finished) 
         { 
          [UIView animateWithDuration:1.0f 
              animations:^ 
          { 
           thirdView.layer.opacity = 1.0f; 
           secondView.layer.opacity = 0.0f; 

          } 
          completion:^(BOOL finished) 
          { 
           thirdView.layer.opacity = 0.0f; 
          }]; 
        }]; 
       }]; 

所有3次都只是UIView的,其中添加作爲主視圖的子視圖的子類。

這簡單地將第一個視圖的不透明度設置爲1.0f,然後是第二個視圖的不透明度,然後是第三個視圖的不透明度。

簡單。沒什麼特別的。

我的問題是:

如果我有更多的意見,讓我們說100,我想執行相同的操作(動畫相同的序列),這個代碼塊將擴大和拓展。因此,爲了重構和遵守編寫代碼的好習慣,我認爲可以通過使用方法和循環來減少代碼。

請問您在重構方面對我有何啓發;此外,如果需要循環,那麼dispatch_apply在重構過程中會有用嗎?

回答

2

如果您想爲100張圖片添加動畫,您可能需要使用2個視圖並將交替圖片加載到每張圖片中。我最近創建GitHub上的樣本應用程序,正是這麼做的:

Animating UIImages with cross-fade opacity changing

+0

與複雜性很好地進行擴展一個非常聰明的解決方案。 +1 –

+0

@DavidRönnqvist,謝謝。 (友善的話和upvote。) –

+0

@DuncanC感謝分享。我會去看看它,看看我是否可以從動畫重構的角度來學習它。提前+1。 – Unheilig