将代码转换为最新的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
这也不可用。
Answers:
CGRect
可以使用下面的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
或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
in Swift 3.0
。
在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)
}
}
然后转到“ 在工作区中查找和替换 ”,找到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)
}
只要将它们放在任何班级之外,它就可以正常工作。(至少对我有用)
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 3中的Swift语法和API重命名更改使该语言更加自然,并在调用Cocoa框架时提供了更加Swift-y的体验。流行的框架Core Graphics和Grand Central Dispatch在Swift中具有更干净的新界面。
Swift 3 Bonus:为什么没有人提到简短形式?
CGRect(origin: .zero, size: size)
.zero
代替 CGPoint.zero
定义类型后,您可以安全地忽略它。