let angle = 45° // angle will be in radians, 45 is in degrees
compila sotto Swift 3. Conserva ancora tutti i valori, fai tutti i calcoli in radianti con CGFloats ..., ma rendi il codice più leggibile con le costanti in gradi. Ad esempio: 90 ° Il simbolo ° esegue magicamente la conversione dei gradi in radianti.
Come impostare questa funzione:
Definire e utilizzare un operatore di postfix per il segno °. Questo operatore farà la conversione da gradi a radianti. Questo esempio è per Ints, estendilo anche per i tipi Float se ne hai la necessità.
postfix operator °
protocol IntegerInitializable: ExpressibleByIntegerLiteral {
init (_: Int)
}
extension Int: IntegerInitializable {
postfix public static func °(lhs: Int) -> CGFloat {
return CGFloat(lhs) * .pi/180
}
}
Alcuni esempi di utilizzo:
let angle = 45°
contentView.transform = CGAffineTransform(rotationAngle: 45°)
let angle = 45
contentView.transform = CGAffineTransform(rotationAngle: angle°)
Attenzione!
È troppo facile utilizzare questa conversione due volte (su un valore già in radianti per errore), si otterrà un numero molto piccolo come risultato, e apparentemente l'angolo risultante sarà sempre pari a zero ... NON usare ° sullo stesso valore due volte (non convertire due volte) !!:
// 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
Penso che si sta perdendo un po 'di codice. Puoi aggiungere tutti i codici rilevanti? Qualsiasi altro definisce, come i gradi? – BlackHatSamurai
questo è il mio codice swift: http: //pastebin.com/bZ4a7EVN –
Puoi mostrarmi il tuo file .h? – BlackHatSamurai