let angle = 45° // angle will be in radians, 45 is in degrees
компилирует под Свифта 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
Я думаю, что вам не хватает какой-то код. Можете ли вы добавить все соответствующие коды? Любой другой определяет, например, градусы? – BlackHatSamurai
это мой быстрый код: http: //pastebin.com/bZ4a7EVN –
Можете ли вы показать мне файл .h? – BlackHatSamurai