【发布时间】:2011-10-12 10:28:13
【问题描述】:
如何在我的 iPhone 应用程序中以编程方式将视图旋转 180 度?
【问题讨论】:
标签: ios objective-c iphone cocoa-touch uiview
如何在我的 iPhone 应用程序中以编程方式将视图旋转 180 度?
【问题讨论】:
标签: ios objective-c iphone cocoa-touch uiview
应该可以使用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;
【讨论】:
CGAffineTransformMakeRotation(( 180 + degrees) * M_PI/180) 而不是 90
使用不同函数的结果与@Manny 的答案相同。
CGFloat degreesOfRotation = 180.0;
view.transform = CGAffineTransformRotate(view.transform,
degreesOfRotation * M_PI/180.0);
【讨论】:
由于 'CGAffineTransformRotate' 使用弧度作为其测量单位,并且 180 度与 PI 相同,因此您可以简单地执行其他答案中提供的数学运算:
view.transform = CGAffineTransformRotate(view.transform, M_PI);
斯威夫特 3:
view.transform = view.transform.rotated(by: .pi)
如果您打算进行大量变换,最好阅读弧度,以便了解发生了什么。
【讨论】:
简单的解决方案:
view.transform = CGAffineTransformMakeRotation(degrees*M_PI/180);
【讨论】:
在 Swift 3 中:
let rotationDegrees = 180.0
let rotationAngle = CGFloat(rotationDegrees * M_PI / 180.0)
view.transform = CGAffineTransform(rotationAngle: rotationAngle)
【讨论】:
最新的 Swift 3 语法:
view.transform = view.transform.rotated(by: .pi)
【讨论】:
斯威夫特 4:
self.view.transform = CGAffineTransform(rotationAngle: .pi);
对于 Benjamin Mayo 或 vtcajones 回答的评论(我显然没有足够的分数来评论他/她的答案):
view.transform = view.transform.rotated(by: .pi)
这将在第一次工作,但下一次调用它会再次旋转视图,回到原来的旋转,这可能不是你想要的。每次都准确设置变换值会更安全。
【讨论】: