如何在iOS上以编程方式将视图旋转180度?

mee*_*tpd 12 iphone cocoa-touch objective-c uiview ios

如何以编程方式在我的iPhone应用程序中将视图旋转180度?

Ben*_*ayo 32

由于'CGAffineTransformRotate'使用弧度作为度量单位,180度与PI相同,而不是其他答案中提供的数学,您可以简单地做:

view.transform = CGAffineTransformRotate(view.transform, M_PI);
Run Code Online (Sandbox Code Playgroud)

斯威夫特3:

view.transform = view.transform.rotated(by: .pi)
Run Code Online (Sandbox Code Playgroud)

如果您计划进行大量的变换,最好是阅读弧度,这样您就可以了解正在发生的事情.


Man*_*nny 13

应该可以使用CGAffineTransform

这个问题引用,这应该做的伎俩:

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;
Run Code Online (Sandbox Code Playgroud)


Ram*_*Ram 6

简单方案:

view.transform = CGAffineTransformMakeRotation(degrees*M_PI/180);
Run Code Online (Sandbox Code Playgroud)


Byt*_*ger 6

斯威夫特 4:

self.view.transform = CGAffineTransform(rotationAngle: .pi);
Run Code Online (Sandbox Code Playgroud)

以及Benjamin Mayovtcajones回答的评论(我显然没有足够的分数来输入我对他/她的回答的评论):

view.transform = view.transform.rotated(by: .pi)
Run Code Online (Sandbox Code Playgroud)

这将在第一次起作用,但下次调用它时会再次旋转视图,回到原始旋转,这可能不是您想要的。每次都准确设置转换值会更安全。


Wil*_*son 5

在 Swift 3 中:

let rotationDegrees =  180.0
let rotationAngle = CGFloat(rotationDegrees * M_PI / 180.0)
view.transform = CGAffineTransform(rotationAngle: rotationAngle)
Run Code Online (Sandbox Code Playgroud)