2012-04-10 47 views
0

我有一個問題,希望有一個簡單的解決方案。我正在嘗試使用按鈕,計時器,框架,cgaffinetransformrotations和延遲創建一個浮動效果。一切都會很好,除了當按鈕旋轉時,我將按鈕的框架設置爲減少或增加10倍左右的像素,旋轉使得按鈕的框架比通常更大。最終的結果是一個不斷增長的按鈕,直到它吞下屏幕。只設置框架的CGPoint

我試着做了向上和向下運動的cgaffinetranslations,但是它使用了變換屬性(這與旋轉使用的屬性相同)。結果是一個非常跳躍和不現實的鮑勃。

我想要完成的只是設置幀的原點組件,而不必指定寬度和高度,因爲即使指定硬編碼的寬度和高度,仍然會在旋轉時增大縮小,並在增大時增大它又接近平衡。

任何想法?

謝謝!

CODE:

- (void)movePlay{ 
[self performSelector:@selector(moveDown:) withObject:play]; 
[self performSelector:@selector(rotateRight:) withObject:play afterDelay:0]; 
[self performSelector:@selector(moveUp:) withObject:play afterDelay:0.5]; 
[self performSelector:@selector(rotateLeft:) withObject:play afterDelay:1]; 

} 

- (void)moveUp:(UIButton*)log{ 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:.5]; 
log.transform = CGAffineTransformMakeTranslation(0, -20); 
[UIView commitAnimations]; 

} 

- (void)rotateRight:(UIButton*)log{ 

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1]; 
log.transform = CGAffineTransformMakeRotation(0.0174532925*10); 
[UIView commitAnimations]; 

} 
+0

距離iOS的參考圖書館暗示第一結合他們:「警告如果變換屬性不是恆等變換,這個屬性的值(幀)沒有定義,因此應該忽略。「意思是,你應該設置邊界,而不是框架。 – lukasz 2012-04-10 00:57:38

回答

1

這只是一個想法。 嘗試將所有單獨的轉換組合在一起。因此,而不是獨立犯

log.transform = CGAffineTransfor..., 

CGAffineTransformConcat(CGAffineTransform t1, CGAffineTransform t2); 
CGAffineTransformRotate(CGAffineTransform t1, CGFloat angle); 
etc. 
+0

工作!謝謝! – David 2012-04-10 01:27:00