2010-03-16 39 views
2

我正在寫一個iPhone程序,並且我想做一個旋轉180度的按鈕,我嘗試使用多點觸控板來旋轉一個UIbutton,但它不成功,我該怎麼做?或者我需要通過代碼來完成它?如何在Xcode + IB中旋轉UIbutton?

+0

請問 - 你爲什麼要這麼做?旋轉獨立於顯示器其餘部分的按鈕幾乎不是一件好事。只是好奇。 – philsquared 2010-03-16 14:56:57

+0

我可以問爲什麼這是一個壞主意? – 2010-03-16 14:57:54

+0

這不是正常用戶體驗的一部分。可以看起來不舒服。如果它有一個特定和合理的目的,那麼它可能沒問題 - 但它們非常罕見。 – philsquared 2010-03-16 15:00:43

回答

1

好了,我們開始吧:

CABasicAnimation *halfTurn; 
halfTurn = [CABasicAnimation animationWithKeyPath:@"transform.rotation"]; 
halfTurn.fromValue = [NSNumber numberWithFloat:0]; 
halfTurn.toValue = [NSNumber numberWithFloat:((360*M_PI)/180)]; 
halfTurn.duration = 0.5; 
halfTurn.repeatCount = 1; 
[myButton addAnimation:halfTurn forKey:@"180"]; 

希望幫助...林打字從我的電腦雖然不是我的Mac - 所以我希望這是正確的!

+1

哇...保持簡單! 爲什麼使用動畫來旋轉單個元素,因爲您可以使用該對象的單個屬性來完成該操作?恕我直言,這是沒用的,它使代碼無用地複雜,並且它對性能沒有好處...... – Macmade 2010-03-16 15:05:54

+0

此代碼功能,並且是旋轉對象的一種*不錯的標準方式 - 只是確保您在此後發佈所有內容。 – 2010-03-16 15:07:56

+0

它沒有說你的代碼不起作用。我只是說這可以用另一種方式來完成,這更簡單,更高效。 – Macmade 2010-03-16 15:11:08

22

你無法從Interface Builder中完成。您必須使用UIButton的transform屬性(它是CGAffineTransform結構)從代碼中旋轉它。 您可以使用CGAffineTransformMakeRotation()來設置它。

myButton.transform = CGAffineTransformMakeRotation((180 * M_PI)/180); 

代碼中的第一個180是以度數表示的角度。該操作將其轉換爲弧度。

5

我想要做同樣的事情 - 點擊時旋轉按鈕180度 - 但使用動畫做。 Neurofluxation's answer用動畫做180度旋轉,但它不是永久性的。 Macmade's answer做了180度的旋轉,但沒有用動畫做。所以,如果你和我一樣,希望做動畫旋轉180度使用此代碼:如果你想轉回到起始位置(即0度旋轉)

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:0.35]; 

// (180 * M_PI)/180 == M_PI, so just use M_PI 
myButton.transform = CGAffineTransformMakeRotation(M_PI); 

[UIView commitAnimations]; 

而且,然後放中相應的動畫代碼之間像上面以下:對於這樣的按鈕

myButton.transform = CGAffineTransformMakeRotation(0); 

作爲一個用例,Evernote的的顯示/隱藏鍵盤按鈕的功能一個非常光滑的180度旋轉,可以使用上述代碼是recreated