3 回答
TA贡献1818条经验 获得超8个赞
Xcode 10•Swift 4.2或更高版本
extension BinaryInteger {
var degreesToRadians: CGFloat { return CGFloat(self) * .pi / 180 }
}
extension FloatingPoint {
var degreesToRadians: Self { return self * .pi / 180 }
var radiansToDegrees: Self { return self * 180 / .pi }
}
操场
45.degreesToRadians // 0.785398163397448
Int(45).degreesToRadians // 0.785398163397448
Int8(45).degreesToRadians // 0.785398163397448
Int16(45).degreesToRadians // 0.785398163397448
Int32(45).degreesToRadians // 0.785398163397448
Int64(45).degreesToRadians // 0.785398163397448
UInt(45).degreesToRadians // 0.785398163397448
UInt8(45).degreesToRadians // 0.785398163397448
UInt16(45).degreesToRadians // 0.785398163397448
UInt32(45).degreesToRadians // 0.785398163397448
UInt64(45).degreesToRadians // 0.785398163397448
Double(45).degreesToRadians // 0.7853981633974483
CGFloat(45).degreesToRadians // 0.785398163397448
Float(45).degreesToRadians // 0.7853981
Float80(45).degreesToRadians // 0.785398163397448278999
TA贡献1829条经验 获得超7个赞
这与您的要求不同,但是在Swift 3 / iOS 10中,您可以使用Measurement类型并执行转换而无需知道公式!
let result = Measurement(value: 45, unit: UnitAngle.degrees)
.converted(to: .radians).value
TA贡献1876条经验 获得超5个赞
let angle = 45° // angle will be in radians, 45 is in degrees
在Swift 3下编译。仍然保留所有值,使用CGFloats以弧度形式进行所有计算...,但是使用度常数可以使代码更具可读性。例如:90 °°符号将神奇地完成度到弧度的转换。
如何设置:
为°符号定义并使用后缀运算符。该运算符将进行度到弧度的转换。本示例适用于Ints,如果需要,还可以将它们扩展为Float类型。
postfix operator °
protocol IntegerInitializable: ExpressibleByIntegerLiteral {
init (_: Int)
}
extension Int: IntegerInitializable {
postfix public static func °(lhs: Int) -> CGFloat {
return CGFloat(lhs) * .pi / 180
}
}
一些用法示例:
let angle = 45°
contentView.transform = CGAffineTransform(rotationAngle: 45°)
let angle = 45
contentView.transform = CGAffineTransform(rotationAngle: angle°)
警告!
两次使用此转换太容易了(错误地使用已经以弧度表示的值),结果将得到非常小的数字,而且看起来生成的角度将始终为零...请勿在同一角度上使用°值两次(不要两次转换)!:
// OBVIOUSLY WRONG!
let angle = 45°° // ° used twice here
// WRONG! BUT EASY TO MISS
let angle = 45° // ° used here
contentView.transform = CGAffineTransform(rotationAngle: angle°) // ° also used here
- 3 回答
- 0 关注
- 1721 浏览
添加回答
举报