CGRectMake、CGPointMake、CGSizeMake、CGRectZero、CGPointZero 在 Swift 中不可用
CGRectMake, CGPointMake, CGSizeMake, CGRectZero, CGPointZero is unavailable in Swift
将代码转换为最新的 swift 3.0 后,我看到了这个错误。
还告诉我 CGSize = CGSizeMake(0,0)
的解决方案
static var frameAtStartOfPan: CGRect = CGRectZero
static var startPointOfPan: CGPoint = CGPointZero
这也是不可用的。
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
.
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)
Apple 博客
Swift 语法和 API 重命名更改 Swift 3 使语言感觉更自然,并在调用 [= 时提供更多 Swift-y 体验33=] 框架。流行的框架 Core Graphics 和 Grand Central Dispatch 在 Swift 中有新的、更清晰的界面。
在 Swift3 和 iOS10[=11= 中快速修复 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+ 快速转换为 Swift3
在 Swift 3 中,您可以简单地使用 CGPoint.zero
或 CGRect.zero
代替 CGRectZero
或 CGPointZero
。
但是,在 Swift 4 中,CGRect.zero
和 'CGPoint.zero'
将起作用
尝试以下操作:
var myToolBar = UIToolbar.init(frame: CGRect.init(x: 0, y: 0, width: 320, height: 44))
这是 swift 的 最新版本
Swift 3 奖励: 为什么没有人提到缩写形式?
CGRect(origin: .zero, size: size)
.zero
而不是 CGPoint.zero
定义类型时,您可以安全地省略它。
如果你想像 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)
}
只需将它们放在任何 class 之外就可以了。 (至少对我有用)
在Swift 4中它的工作原理如下
collectionView.setContentOffset(CGPoint.zero, animated: true)
您可以使用它替换 CGRectZero
CGRect.zero
对于 CGSize
CGSize(width: self.view.frame.width * 3, height: self.view.frame.size.height)
而不是 CGSizeMake 添加 CGSize 它会起作用。
objective c.
中使用了CGSizeMake
您不想将 make 与 swift
一起使用
将代码转换为最新的 swift 3.0 后,我看到了这个错误。
还告诉我 CGSize = CGSizeMake(0,0)
static var frameAtStartOfPan: CGRect = CGRectZero
static var startPointOfPan: CGPoint = CGPointZero
这也是不可用的。
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
.
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)
Apple 博客
Swift 语法和 API 重命名更改 Swift 3 使语言感觉更自然,并在调用 [= 时提供更多 Swift-y 体验33=] 框架。流行的框架 Core Graphics 和 Grand Central Dispatch 在 Swift 中有新的、更清晰的界面。
在 Swift3 和 iOS10[=11= 中快速修复 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+ 快速转换为 Swift3
在 Swift 3 中,您可以简单地使用 CGPoint.zero
或 CGRect.zero
代替 CGRectZero
或 CGPointZero
。
但是,在 Swift 4 中,CGRect.zero
和 'CGPoint.zero'
将起作用
尝试以下操作:
var myToolBar = UIToolbar.init(frame: CGRect.init(x: 0, y: 0, width: 320, height: 44))
这是 swift 的 最新版本
Swift 3 奖励: 为什么没有人提到缩写形式?
CGRect(origin: .zero, size: size)
.zero
而不是 CGPoint.zero
定义类型时,您可以安全地省略它。
如果你想像 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)
}
只需将它们放在任何 class 之外就可以了。 (至少对我有用)
在Swift 4中它的工作原理如下
collectionView.setContentOffset(CGPoint.zero, animated: true)
您可以使用它替换 CGRectZero
CGRect.zero
对于 CGSize
CGSize(width: self.view.frame.width * 3, height: self.view.frame.size.height)
而不是 CGSizeMake 添加 CGSize 它会起作用。 objective c.
中使用了CGSizeMake您不想将 make 与 swift
一起使用