web-dev-qa-db-fra.com

Comment utiliser CGFloat dans Swift?

var posinonY:Float = Float(y) + Float(pipeDown.size.height) + Float(verticalPipeGap)
pipeDown.position = CGPointMake(0.0, Float(posinonY))

Je reçois cette erreur:

"NSNumber" n'est pas un sous-type de "CGFloat" "

Pourquoi?


Modifier:

CGFLoat besoin de type double

pipeDown.position = CGPointMake(0.0,  Double(posinonY))

c'est acceptable.

17
Aeli.li

Utilisez CGFloat(number) au lieu de Float(number)

pipeDown.position = CGPointMake(0.0, CGFloat(posinonY))
38
MJN

Puisque CGFloat n'est pas une Double sur 32 bits, il devient difficile d'utiliser CGGeometry et des frameworks tels que CoreGraphics ou SpriteKit. Cette bibliothèque le rend un peu plus facile et, espérons-le, Apple s'en occupera bientôt.

J'ai écrit ceci pour aider https://github.com/seivan/ScalarArithmetic

Mais si vous voulez simplement le faire fonctionner sans dépendances, utilisez var myFloat:CGFloat explicitement, et assurez-vous de transtyper toute Double (nombres inférés) en CGFloat 2.0 est déduit d'être un double et ne jouera pas avec le CG-Structs sur 32bit.

7
Seivan

Comme dans Swift 4

utilisation 

CGPoint(x: 12.0, y: 100.0)
0
Jack