如何在Swift中使用CGFloat?

Ael*_*.li 18 cgfloat swift

var posinonY:Float = Float(y) + Float(pipeDown.size.height) + Float(verticalPipeGap)
pipeDown.position = CGPointMake(0.0, Float(posinonY))
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

"NSNumber"不是'CGFloat'的子类型"

为什么?


编辑:

CGFLoat需要双重类型

pipeDown.position = CGPointMake(0.0,  Double(posinonY))
Run Code Online (Sandbox Code Playgroud)

还行吧.

MJN*_*MJN 38

CGFloat(number)而不是Float(number)

pipeDown.position = CGPointMake(0.0, CGFloat(posinonY))
Run Code Online (Sandbox Code Playgroud)

  • 我遇到了类似的问题,但是这对5s的开发人员来说不是这样吗?当我选择5s作为模拟器时,问题就消失了,当我切换回iphone 5模拟器时,我得到"NSNumber不是CGFloat的子类型" (3认同)
  • 遗憾的是,开发人员没有这样做. (2认同)

Sei*_*van 7

由于CGFloat不是Double32位,因此很难使用CGGeometry和CoreGraphics或SpriteKit等框架.这个库让它变得更容易,希望Apple很快就能完成它.

我写这个来帮助 https://github.com/seivan/ScalarArithmetic

但是如果你想让它在没有依赖关系的情况下使用var myFloat:CGFloat显式,并确保将任何Double(推断类型的数字)转换为CGFloat 2.0被推断为Double,并且不会与CG-Structson 32bit 一起使用.