2011-07-25 63 views

回答

12

應使用CGAffineTransform

報價從this question是可能的,這應該做的伎倆:

CGFloat radians = atan2f(yourView.transform.b, yourView.transform.a); 
CGFloat degrees = radians * (180/M_PI); 
CGAffineTransform transform = CGAffineTransformMakeRotation((90 + degrees) * M_PI/180); 
yourView.transform = transform; 
+1

這使其旋轉90度。如果你想讓它旋轉180度,它們的最後一行應該是'CGAffineTransformMakeRotation(('** 180 **'+度)* M_PI/180)'而不是90 –

4

相同的結果作爲使用@不同的功能曼尼的答案。

CGFloat degreesOfRotation = 180.0; 
view.transform = CGAffineTransformRotate(view.transform, 
    degreesOfRotation * M_PI/180.0); 
25

作爲「CGAffineTransformRotate」用途弧度爲單位測量的,和180度是一樣的PI,代替數學提供在其他的答案可以簡單地做:

view.transform = CGAffineTransformRotate(view.transform, M_PI); 

夫特3:

view.transform = view.transform.rotated(by: .pi) 

如果你打算做了很多的變換,它可能是最好的弧度讀了,所以你明白什麼是GOI恩。

6

簡單的解決方案:

view.transform = CGAffineTransformMakeRotation(degrees*M_PI/180); 
4

在夫特3:

let rotationDegrees = 180.0 
let rotationAngle = CGFloat(rotationDegrees * M_PI/180.0) 
view.transform = CGAffineTransform(rotationAngle: rotationAngle) 
0

最新夫特3語法:

view.transform = view.transform.rotated(by: .pi) 
0

夫特4:

self.view.transform = CGAffineTransform(rotationAngle: .pi); 

和註釋(我顯然沒有足夠的積分進入我對他/她的回答註釋)本傑明·梅奧vtcajones答案:

view.transform = view.transform.rotated(by: .pi) 

這將工作的第一次,但下次它被調用時它會再次旋轉視圖,回到原來的旋轉,這可能不是你想要的。每次準確設置變換值會更安全。