CGRectMake,CGPointMake,CGSizeMake,CGRectZero,CGPointZero在Swift中不可用

在将代码转换为最新的swift 3.0后,我显示了这个错误。

在这里输入图像描述 在这里输入图像描述

也告诉我解决schemeCGSize = CGSizeMake(0,0)

 static var frameAtStartOfPan: CGRect = CGRectZero static var startPointOfPan: CGPoint = CGPointZero 

这也是不可用的。

CGRect可以简单地使用CGPointCGSize的实例创build,如下所示。

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

或者如果我们想在CGFloatDoubleInt指定每个值,我们可以使用这个方法。

 let rect = CGRect(x: 0, y: 0, width: 100, height: 100) // CGFloat, Double, Int 

CGPoint可以像这样创build。

  let point = CGPoint(x: 0,y :0) // CGFloat, Double, Int 

CGSize可以像这样创build。

 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 

CGRectZeroCGPointZeroreplace为Swift 3.0 CGRect.zeroCGPoint.zero

Swift3和iOS10中快速修复CGRectMake,CGPointMake, CGSizeMake

添加这些扩展名:

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

然后转到“ 在工作区中查找和replace ”查找CGRectMake,CGPointMake,CGSizeMake并将其replace为CGRect,CGPoint,CGSize

这些步骤可能会节省所有的时间,因为Xcode现在不能让我们快速从Swift 2+转换到Swift 3

在Swift 3中,您可以简单地使用CGPoint.zeroCGRect.zero来代替CGRectZeroCGPointZero

不过,在Swift 4中,只有CGRect.zero会起作用

Core Graphics和其他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语言中的Swift语法和API重命名更改使得语言感觉更自然,并且在调用Cocoa框架时提供了更多的Swift-y体验。 stream行的框架Core Graphics和Grand Central Dispatch在Swift中有新的,更清洁的接口。

尝试以下操作:

 var myToolBar = UIToolbar.init(frame: CGRect.init(x: 0, y: 0, width: 320, height: 44)) 

这是swift的最新版本

斯威夫特3奖金:为什么没有人提到简称?

 CGRect(origin: .zero, size: size) 

.zero而不是CGPoint.zero

当定义types时,可以放心地忽略它。

如果你想在swift 2中使用它们,你可以使用这些funcs:

对于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) } 

只要把它们放在任何课堂之外,它就应该工作。 (至less适用于我)