2009-12-08 75 views
1

因此,UIButtons的動畫大小轉換似乎存在問題。具體而言,如果您有一個類型爲UIButtonTypeCustom的按鈕,則任何幀大小轉換都會立即發生。運動和其他動畫正常發生。UIButton與UIButtonTypeCustom動畫錯誤

有沒有人有很好的解決這個問題?我是猜測,這是因爲自定義按鈕包含圖像,並且UIView計算其轉換時出現問題。

This guy似乎找到了同樣的問題,但沒有解決方法。

下面是一個例子。圖像原點將在兩秒內從0.0.0.0到100.0,100.0平滑移動,但尺寸立即跳轉到200x200。

UIButton *tButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
[tButton setBackgroundImage:tImage forState:UIControlStateNormal]; 
tButton.frame = CGRectMake(0.0, 0.0, 10.0, 10.0); 

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationBeginsFromCurrentState:YES]; 
[UIView setAnimationDuration:2.0]; 

tButton.frame = CGRectMake(100.0, 100.0, 200.0, 200.0); 

[UIView commitAnimations]; 
+0

實際上,在調用setBackgroundImage之後該錯誤開始顯示,看起來像它的類型沒有區別。可以通過設置按鈕的層,以所希望的圖像的內容屬性測試(您需要#IMPORT 並添加QuartzCore.framework): tButton.layer.contents =(ID)的TImage。 CGImage; 同時保持其類型設置爲UIButtonTypeCustom和移除調用了setBackgroundImage: – Russian 2011-10-28 16:28:16

+0

@Russian - 有趣的...我不知道如果按鈕框架實際上是動畫順利,但圖像本身立即重新調整,只是透支。我必須測試一下。 – DougW 2011-10-28 17:11:22

回答

0

幸得davbryn這個答案,但不是重新定義您使用的框架:

button.transform = CGAffineTransformMakeScale(1.5,1.5); 

它不那麼容易,因爲只使用一個新的框架,所以你將不得不玩的它但它應該讓你指出正確的方向。