2011-12-12 129 views
3

我正在使用一個UIScrollView與按鈕的列表看起來很像UIPickerView。我剛剛實施搖擺洗牌,在檢測到抖動時,我使用以下方法將UIScrollView的內容偏移量設置爲randomShuffle的位置。自定義UIScrollView動畫

[Singlescroll setContentOffset:CGPointMake(jumpX, jumpY+randShuffle*sepValue) animated:YES]; 

相反只是移動內容偏移到相匹配的按鈕我想實現的混洗動畫其中視圖幾乎「旋轉」像老虎機,然後在randomShuffle按鈕位置結束的隨機位置的。

我試圖通過簡單的動畫的偏移量的UIScrollView的頂部要做到這一點,然後再次向下行進回到randomShuffle位置(一個接一個),然而這並沒有工作,它只是直奔前隨機洗牌的位置。我意識到我沒有用計時器來試這個,所以動畫沒有延遲,但是我希望儘可能避免運行計時器。

是否有任何內置的動畫可以處理這個問題?如果不是,請你能建議我在使用計時器之前如何處理這個問題?謝謝。

+0

UIScrollViews中是否有內置的動畫內置? – Wez

回答

5

,而不是僅僅使用動畫的:是,你有沒有嘗試把它變成類似:

[UIView animateWithDuration:.25 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{ 
    [Singlescroll setContentOffset:maximumOffsetPoint]; //spin all the way up? 
}completion:^(BOOL finished){ 
    if (finished) 
     //kick off another animation, to spin it back down: 
     [UIView animateWithDuration:.25 delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{ 
      [Singlescroll setContentOffset:CGPointMake(jumpX, jumpY+randShuffle*sepValue)]; 
     }completion:nil]; 
    } 
}]; 

我不知道這是否回答你的問題,但在完成塊是超級方便,可能是你需要。在完成塊中,第二個動畫只會在第一個動畫結束時被調用。

此外,在UIView上有幾個animateWithDuration:方法,但根據我的經驗,這對於動畫屬性(如contentOffset和zoomToRect)的滾動視圖更加可靠。

+0

謝謝,它爲我工作。如果您正在重複使用視圖,請在沒有設置選項的情況下執行視圖。 –