CGRectMake, CGPointMake, CGSizeMake, CGRectZero, CGPointZero no está disponible en Swift
Después de convertir el código a la última versión de Swift 3.0, aparece este error.
También dime la solución paraCGSize = CGSizeMake(0,0)
static var frameAtStartOfPan: CGRect = CGRectZero
static var startPointOfPan: CGPoint = CGPointZero
Que tampoco está disponible.
CGRect
Se puede crear simplemente usando una instancia de CGPoint
o CGSize
, que se proporciona a continuación.
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))
O si queremos especificar cada valor en CGFloat
o Double
o Int
, podemos usar este método.
let rect = CGRect(x: 0, y: 0, width: 100, height: 100) // CGFloat, Double, Int
CGPoint
Se puede crear así.
let point = CGPoint(x: 0,y :0) // CGFloat, Double, Int
CGSize
Se puede crear así.
let size = CGSize(width: 100, height: 100) // CGFloat, Double, Int
También tamaño y punto con 0 como valores, se puede hacer así.
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
reemplazado con CGRect.zero
& CGPoint.zero
en Swift 3.0
.
Solución rápida para CGRectMake, CGPointMake, CGSizeMake en Swift3 y iOS10
Añade estas extensiones:
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)
}
}
Luego vaya a " Buscar y reemplazar en el espacio de trabajo ". Busque CGRectMake, CGPointMake, CGSizeMake y reemplácelos con CGRect, CGPoint, CGSize.
Estos pasos pueden ahorrarnos todo el tiempo ya que Xcode en este momento no nos brinda una conversión rápida de Swift 2+ a Swift 3.