如何在Swift中使用CGFloat?

时间:2014-06-03 07:55:20

标签: swift cgfloat

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 个答案:

答案 0 :(得分:38)

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

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

答案 1 :(得分:7)

由于CGFloat在32位上不是Double,因此很难使用CGGeometry和CoreGraphics或SpriteKit等框架。这个库让它变得更容易,希望Apple很快就能解决它。

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

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

答案 2 :(得分:0)

Swift 4

一样

使用

CGPoint(x: 12.0, y: 100.0)

答案 3 :(得分:0)

使用CGFloat(Float)。 例如:-CGFloat(100.0)。 我们可以在:

中使用CGFloat
self.collectionHeader.heightAnchor.constraint(equalToConstant: CGFloat(100.0)).isActive = true