转换代码到最新的swift 3.0后,我显示这个错误。

也告诉我解决方案CGSize = CGSizeMake(0,0)

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

这也是不可用的。


当前回答

快速修复了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

其他回答

而不是CGSizeMake添加CGSize它将工作。 在objective c中使用CGSizeMake。

你不应该把make和swift结合使用

可以简单地使用CGPoint或CGSize的实例创建CGRect,如下所示。

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

同样,size和point的值为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。零& CGPoint。Swift 3.0是零。

在Swift 4中,它的工作原理如下

collectionView.setContentOffset(CGPoint.zero, animated: true)

额外提示:为什么没有人提到它的简写形式呢?

CGRect(origin: .zero, size: size)

. 0而不是cgpoint . 0

定义了类型后,可以安全地省略它。

你可以用CGRectZero替换它

CGRect.zero