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

我收到此错误:

“NSNumber' 不是 'CGFloat' 的子类型”

为什么?


编辑:

CGFLoat 需要双精度型

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

还行吧。

4

4 回答 4

39

使用CGFloat(number)代替Float(number)

pipeDown.position = CGPointMake(0.0, CGFloat(posinonY))
于 2014-06-03T08:01:45.247 回答
7

由于CGFloat不是Double32 位的,因此很难使用 CGGeometry 和 CoreGraphics 或 SpriteKit 等框架。这个库使它变得更容易一些,希望 Apple 能尽快处理它。

我写这个是为了帮助 https://github.com/seivan/ScalarArithmetic

但是,如果您只想使其在没有依赖关系的情况下工作,请var myFloat:CGFloat明确使用,并确保将任何Double(类型推断的数字)转换为CGFloat 2.0 被推断为 Double 并且不会与CG-Structs32 位一起使用。

于 2014-07-07T12:06:49.700 回答
0

使用 CGFloat(浮点数)。例如:—— CGFloat(100.0)。我们可以使用 CGFloat :

self.collectionHeader.heightAnchor.constraint(equalToConstant: CGFloat(100.0)).isActive = true
于 2020-07-10T07:58:08.650 回答
0

Swift 4一样

利用

CGPoint(x: 12.0, y: 100.0)
于 2018-03-08T04:56:54.960 回答