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))
这没关系。
答案 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)
。
我们可以在:
self.collectionHeader.heightAnchor.constraint(equalToConstant: CGFloat(100.0)).isActive = true