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