2

多個併發調用的UIView transitionWithView與UIViewAnimationOptionTransitionCrossDissolve我想圖像的變化,從一個UIImageView與動畫到另一個:閃爍上的UIImageView

[UIView transitionWithView:self.scrollView 
         duration:1 
         options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction 
        animations:^ 
    { 
     self.imageView.image = image; 

    } completion:nil]; 

該協會致力於一個完美的動畫罰款。 但是,如果我有一個或多個動畫開始,而第一個動畫仍在進行中,我會看到一些有線行爲,它看起來像某種跳躍或閃爍。 如果我在模擬器中使用慢動畫,看起來第一個動畫停止並跳到第一個動畫的結束圖像,然後從第二個動畫開始。 有沒有人有一個想法如何防止這種情況發生?

回答

0

試試這個

[UIView transitionWithView:self.imageView... 

使用[UIView transitionWithView:self.scrollView...你基本上是說:「嘿,我想整個動畫滾動視圖」,你可能不希望。你總是隻想動畫改變特定的圖像視圖。

編輯:

看看這段代碼。它執行在圖像視圖中更改圖像的交叉淡入淡出(交叉融合)動畫。它工作正常,我已經多次使用此代碼。

[UIView transitionWithView:imageView 
       duration:0.4 
       options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction 
      animations:^{ 
       // Set the new image 
       // Since its done in animation block, the change will be animated 
       imageView.image = newImage; 
      } completion:^(BOOL finished) { 
       // Do whatever when the animation is finished 
      }]; 

如果我正確理解你的問題,這裏是哪裏出了問題可能的解釋是:

[UIView transitionWithView:self.scrollView開始動畫整個滾動視圖。交叉溶解動畫,包括以下步驟:

  1. 創建(在你的情況下滾動視圖)動畫視圖的的「快照」層
  2. 執行在動畫塊
  3. 創建的視圖新快照的變化。這一次,快照已包含更改(圖像視圖有新圖像)
  4. 執行兩個快照的交叉消解(交叉淡入淡出)。
  5. 完成

在這裏你可以看到問題的來源。您可能混合了由不正確定義的動畫塊視圖(整個滾動視圖而不是僅內部圖像視圖)導致的多個滾動視圖動畫(交叉淡入淡出)

+0

感謝您的幫助。嘗試過,但仍然是同樣的問題。文檔說:執行轉換的容器視圖。所以應該在我的情況下scrollView在imageView所在的位置。 – bllubbor

+0

請看看我編輯的答案。我添加了一段執行淡入淡出動畫來改變圖像的代碼。這段代碼工作正常,我多次使用過這個代碼。 –

3

嘗試告訴動畫,它應該從當前狀態開始。 (UIViewAnimationOptionBeginFromCurrentState)

[UIView transitionWithView:self.imageView 
         duration:1 
         options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction 
        animations:^ 
    { 
     self.imageView.image = image; 

    } completion:nil]; 
+0

也不起作用;( – bllubbor