let angle = 45° // angle will be in radians, 45 is in degrees
Biên dịch theo Swift 3 . Vẫn giữ tất cả các giá trị, thực hiện tất cả các phép tính bằng radian với CGFloats ..., nhưng làm cho mã dễ đọc hơn với các hằng số theo độ. Ví dụ: 90 °
Dấu ° sẽ thực hiện chuyển đổi độ sang radian một cách kỳ diệu.
Cách thiết lập điều này:
Xác định và sử dụng toán tử hậu tố cho dấu ° . Toán tử này sẽ thực hiện chuyển đổi từ độ sang radian. Ví dụ này dành cho Ints, hãy mở rộng chúng cho các loại Float nếu bạn có nhu cầu.
postfix operator °
protocol IntegerInitializable: ExpressibleByIntegerLiteral {
init (_: Int)
}
extension Int: IntegerInitializable {
postfix public static func °(lhs: Int) -> CGFloat {
return CGFloat(lhs) * .pi / 180
}
}
Một số ví dụ về cách sử dụng:
let angle = 45°
contentView.transform = CGAffineTransform(rotationAngle: 45°)
let angle = 45
contentView.transform = CGAffineTransform(rotationAngle: angle°)
Cảnh báo!
Quá dễ dàng để sử dụng chuyển đổi này hai lần (trên một giá trị đã được tính bằng radian do nhầm lẫn), bạn sẽ nhận được một số rất nhỏ như kết quả và dường như góc kết quả sẽ luôn bằng 0 ... KHÔNG sử dụng ° trên cùng một giá trị hai lần (không chuyển đổi hai lần) !!:
// 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