コードを最新のSwift 3.0に変換した後、このエラーが表示されます。
また、解決策を教えてください CGSize = CGSizeMake(0,0)
static var frameAtStartOfPan: CGRect = CGRectZero
static var startPointOfPan: CGPoint = CGPointZero
これも利用できません。
コードを最新のSwift 3.0に変換した後、このエラーが表示されます。
また、解決策を教えてください CGSize = CGSizeMake(0,0)
static var frameAtStartOfPan: CGRect = CGRectZero
static var startPointOfPan: CGPoint = CGPointZero
これも利用できません。
回答:
CGRect
以下に示すa CGPoint
またはのインスタンスを使用して簡単に作成できCGSize
ます。
let rect = CGRect(origin: CGPoint(x: 0,y :0), size: CGSize(width: 100, height: 100))
// Or
let rect = CGRect(origin: .zero, size: CGSize(width: 100, height: 100))
または、CGFloat
or Double
またはInt
で各値を指定する場合は、このメソッドを使用できます。
let rect = CGRect(x: 0, y: 0, width: 100, height: 100) // CGFloat, Double, Int
CGPoint
このように作成できます。
let point = CGPoint(x: 0,y :0) // CGFloat, Double, Int
CGSize
このように作成できます。
let size = CGSize(width: 100, height: 100) // CGFloat, Double, Int
サイズとポイントも0を値として、このようにできます。
let size = CGSize.zero // width = 0, height = 0
let point = CGPoint.zero // x = 0, y = 0, equal to CGPointZero
let rect = CGRect.zero // equal to CGRectZero
CGRectZero
&CGPointZero
に置き換えCGRect.zero
&CGPoint.zero
中Swift 3.0
。
クイックフィックスCGRectMake、CGPointMake、CGSizeMakeでSwift3&iOS10
これらの拡張子を追加します。
extension CGRect{
init(_ x:CGFloat,_ y:CGFloat,_ width:CGFloat,_ height:CGFloat) {
self.init(x:x,y:y,width:width,height:height)
}
}
extension CGSize{
init(_ width:CGFloat,_ height:CGFloat) {
self.init(width:width,height:height)
}
}
extension CGPoint{
init(_ x:CGFloat,_ y:CGFloat) {
self.init(x:x,y:y)
}
}
その後「に進みます。ワークスペースで検索と置換検索」CGRectMake、CGPointMake、CGSizeMakeとでそれらを置き換えCGRect、するCGPoint、CGSizeを
XcodeはSwift 2+からSwift 3への迅速な変換を提供していないため、これらのステップはすべての時間を節約できます。
Swift 2のようにそれらを使用したい場合は、次の関数を使用できます。
CGRectMakeの場合:
func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect {
return CGRect(x: x, y: y, width: width, height: height)
}
CGPointMakeの場合:
func CGPointMake(_ x: CGFloat, _ y: CGFloat) -> CGPoint {
return CGPoint(x: x, y: y)
}
CGSizeMakeの場合:
func CGSizeMake(_ width: CGFloat, _ height: CGFloat) -> CGSize {
return CGSize(width: width, height: height)
}
それらをクラスの外に置くだけで動作します。(少なくとも私にとってはうまくいく)
コアグラフィックスやその他のAPIの構造やその他のすべてのシンボルが明確になり、パラメーター名も含まれています。 https://developer.apple.com/reference/coregraphics#symbols
CGRect(x: Int, y: Int, width: Int, height: Int)
CGVector(dx: Int, dy: Int)
CGPoint(x: Double, y: Double)
CGSize(width: Int, height: Int)
CGPointの例:
let newPoint = stackMid.convert(CGPoint(x: -10, y: 10), to: self)
CGVectorの例:
self.physicsWorld.gravity = CGVector(dx: 0, dy: gravity)
CGSizeの例:
hero.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: 16, height: 18))
CGRectの例:
let back = SKShapeNode(rect: CGRect(x: 0-120, y: 1024-200-30, width: 240, height: 140), cornerRadius: 20)
アップルブログ
Swift 3でのSwift構文とAPIの名前変更の変更により、言語がより自然に感じられ、Cocoaフレームワークを呼び出すときにSwift-yエクスペリエンスがさらに提供されます。人気のあるフレームワークであるコアグラフィックスとグランドセントラルディスパッチには、Swiftの新しい、よりすっきりしたインターフェイスがあります。
Swift 3ボーナス:なぜショートフォームに言及しなかったのですか?
CGRect(origin: .zero, size: size)
.zero
の代わりに CGPoint.zero
タイプが定義されたら、安全に省略できます。
これはCGRectZeroの代わりに使用できます
CGRect.zero