web-dev-qa-db-ja.com

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))

これはOKです。

18
Aeli.li

CGFloat(number)の代わりにFloat(number)を使用します

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

CGFloatは32ビットではDoubleではないため、CGGeometryおよびCoreGraphicsやSpriteKitなどのフレームワークを使用するのは難しくなります。このライブラリはそれを少し簡単にし、うまくいけばAppleはすぐにそれを処理します。

https://github.com/seivan/ScalarArithmetic を手伝うためにこれを書きました

ただし、依存関係なしで機能させるだけの場合は、var myFloat:CGFloatを明示的に使用し、Double(型が推論される数値)をCGFloat 2.0にキャストするようにしてください。ダブルで、32ビットでCG-Structsと共に再生されません。

7
Seivan

Swift 4のように

使用する

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