0

我想在創建自定義控件的同時學習一些動畫。我已經通過一個夢幻般的教程在這裏了: http://www.raywenderlich.com/9864/how-to-create-a-rotating-wheel-control-with-uikit動畫轉換的UIImageView?

我找到了工作,並且開發者在github上鍊接到自己的代碼在這裏: https://github.com/funkyboy/How-To-Create-a-Rotating-Wheel-Control-with-UIKit

現在我正在努力做動畫時,選定的項目會在選中的插槽中旋轉時增長。我還改變了選擇的時隙是在底部,並以適應此我已經改變的代碼的方法中

- (void) drawWheel 

我已經改變了線

im.transform = CGAffineTransformMakeRotation (angleSize * I);

im.transform = CGAffineTransformMakeRotation(angleSize * I - M_PI/2);

考慮到現在是-pi/2

我想要做的就是所選擇的丁香種植和尺寸的縮小,接下來的事情的位置;這將發生在兩個不同的場合;一次,當輪子加載時,以及當關閉通過選定位置時。在這裏,我有點卡住了。

我已經寫了下列方法:

  • (無效)growImage:(的UIImageView *)V {

    [UIView的animateWithDuration:1.0動畫:^ { v.transform = CGAffineTransformMakeScale(1.3 ,1.3); } 完成:^(BOOL完成){UIView animateWithDuration:1.0動畫:^ v.transform = CGAffineTransformMakeScale(1.0,1.0); }]; }];

    }

和我調用此首先在initWheel方法,其中所述初始丁香是第一組:

if (i == 0) { 
     im.alpha = maxAlphavalue; 
     [self growImage: cloveImage]; 
    } 

對於第二項,我寫了下面方法:

  • (void)findViewandGrowImage:(int)tag {(self.container.subviews中的id myArrayElement){ } { UIImageView * v = myArrayElement; if(v。tag == tag){ [self growImage:v]; 休息; } } }

我在 調用 - (無效)touchesEnded:(NSSet中*)觸摸withEvent:方法(的UIEvent *)事件{

因爲如此,設定α值後:

lab.alpha = maxAlphavalue; 
[self findViewandGrowImage : currentValue]; 

對我而言,我在某個地方存在一個根本的脫節:我做錯了什麼;第一個案件工作正常;第二種情況使得丁香旋轉到輪子上的不同部分以及成長和縮小......我不知道爲什麼。我很喜歡任何輸入。

謝謝。

+0

我真的不明白你想看看你的第二個案例。 – HalR

回答

1

如果你有改變的:

m.transform = CGAffineTransformMakeRotation(angleSize*i - M_PI/2); 

,然後你把它動畫到的

[UIView animateWithDuration:1.0 animations:^{ v.transform = CGAffineTransformMakeScale(1.3, 1.3); } 

轉化爲它的動畫將旋轉從(angleSize*i - M_PI/2)揹回角爲0,因爲你的第二個轉換不包括這個輪換。

如果你想讓它改變大小,並維持其當前的角度,您將需要一個旋轉帶刻度在計算中,像這樣結合起來,然後用這個:

[UIView animateWithDuration:1.0 animations:^{ 
    CGAffineTransform newTransform = CGAffineTransformMakeRotation(angle); 
    v.transform = CGAffineTransformScale(newTransform, 1.3, 1.3);v.transform = CGAffineTransformMakeScale(1.3, 1.3); 
} 
+0

謝謝你,這幫助我走上正軌。我必須刪除完成塊並使用角度調整進行變換。 – marina