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°)
警告!
兩次使用此轉換太容易了(錯誤地使用已經以弧度表示的值),結果將得到非常小的數字,而且看起來生成的角度將始終為零...請勿在同一角度上使用°值兩次(不要兩次轉換)?。?/p>
// 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 關注
- 1826 瀏覽
添加回答
舉報