CGRectMake, CGPointMake, CGSizeMake, CGRectZero, CGPointZero no está disponible en Swift

Resuelto niravdesai21 asked hace 8 años • 11 respuestas

Después de convertir el código a la última versión de Swift 3.0, aparece este error.

ingrese la descripción de la imagen aquíingrese la descripción de la imagen aquí

También dime la solución paraCGSize = CGSizeMake(0,0)

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

Que tampoco está disponible.

niravdesai21 avatar Jun 21 '16 21:06 niravdesai21
Aceptado

CGRectSe puede crear simplemente usando una instancia de CGPointo 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 CGFloato Doubleo Int, podemos usar este método.

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

CGPointSe puede crear así.

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

CGSizeSe 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& CGPointZeroreemplazado con CGRect.zero& CGPoint.zeroen Swift 3.0.

 avatar Jun 21 '2016 15:06

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.

Rafat touqir Rafsun avatar Sep 29 '2016 11:09 Rafat touqir Rafsun