2012-10-28 67 views
0

我最近偶然發現了一個問題,我有一個可以由用戶旋轉的視圖。但在旋轉過程中,它應該增大10%(按比例放大)。如何動畫視圖變換的一部分

我希望縮放是動畫,但旋轉是立即可見的,因爲我在手勢識別器的回調中沒有設置動畫。

問:是否有可能不被攔截的動畫規模更新CGAffineTransform的旋轉,或者是有沒有解決創建得到,而不是邁上了一個包裹看法沒有辦法?

回答

1

編輯:

我認爲比例會是最容易出錯的方式包裝視圖。

如果您非常想避免這種情況,您可以嘗試使用NSTimer手動創建縮放動畫。也許如果你先查詢當前的變換值,然後修改它,而不是用一個獨立創建的(用於旋轉和縮放)代替它,它可以工作。

我覺得一個隱式的UIView動畫會在開始時計算所有後續的值,所以會弄亂你的旋轉。

另一種方法是在縮放發生時鎖定旋轉角度。缺點是,縮放和旋轉不會同時進行。無論如何,你可以創建一個iVar或物業讓我們說rotationLocked並做某事。像這樣:

- (void)handlePan:(UIPanGestureRecognizer *)gr 
{ 
    if (gr.state == UIGestureRecognizerStateBegan) 
    { 
     self.rotationLocked = YES; 
     [UIView animateWithDuration:.2 animations:^{ 
      [self scaleView]; 
     }completion:^{ self.rotationLocked = NO; }; 
    } 
    if (gr.state == UIGestureRecognizerStateChanged) 
    { 
     if (!self.rotationLocked){ 
      // do the rotation 
    } 
    if (gr.state == UIGestureRecognizerStateEnded) 
    { 
     // do something else 
    } 
+0

想法很好,但我希望用戶旋轉視圖**,而它是放大。 –

+0

我編輯了我的答案,可能是幫助 – Tobi

+0

你可以編輯你的答案只是說它不可能,並建議稍後在你的答案rotationLocked?如果你閱讀前幾行,我只想接受答案,非常精確。 –

相關問題