unavailable uikit swift3 xcode8 ios10

uikit - cgrectmake is unavailable in swift 4



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

En Swift 3, simplemente puede usar CGPoint.zero o CGRect.zero en lugar de CGRectZero o CGPointZero .

Sin embargo, en Swift 4, CGRect.zero y ''CGPoint.zero'' funcionarán

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

También dime solución para CGSize = CGSizeMake(0,0)

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

Que tampoco está disponible.


Intenta lo siguiente:

var myToolBar = UIToolbar.init(frame: CGRect.init(x: 0, y: 0, width: 320, height: 44))

Esto es para la última versión de Swift


Las estructuras, así como todos los demás símbolos en Core Graphics y otras API, se han vuelto más limpios y también incluyen nombres de parámetros. 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)

Ejemplo de CGPoint:

let newPoint = stackMid.convert(CGPoint(x: -10, y: 10), to: self)

Ejemplo de CGVector:

self.physicsWorld.gravity = CGVector(dx: 0, dy: gravity)

Ejemplo de CGSize:

hero.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: 16, height: 18))

Ejemplo de CGRect:

let back = SKShapeNode(rect: CGRect(x: 0-120, y: 1024-200-30, width: 240, height: 140), cornerRadius: 20)

Blog de Apple

La sintaxis de Swift y los cambios de cambio de nombre de API en Swift 3 hacen que el lenguaje se sienta más natural y brindan una experiencia Swift-y aún mayor al llamar a los marcos de Cocoa. Los marcos populares Core Graphics y Grand Central Dispatch tienen interfaces nuevas y mucho más limpias en Swift.


Para CGSize

CGSize(width: self.view.frame.width * 3, height: self.view.frame.size.height)


Puede usar esto con el reemplazo de CGRectZero

CGRect.zero


Si desea usarlos como en swift 2, puede usar estas funciones:

Para CGRectMake:

func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect { return CGRect(x: x, y: y, width: width, height: height) }

Para CGPointMake:

func CGPointMake(_ x: CGFloat, _ y: CGFloat) -> CGPoint { return CGPoint(x: x, y: y) }

Para CGSizeMake:

func CGSizeMake(_ width: CGFloat, _ height: CGFloat) -> CGSize { return CGSize(width: width, height: height) }

Simplemente colóquelos fuera de cualquier clase y debería funcionar. (Funciona para mí al menos)


CGRect 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 puede crear así.

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

CGSize 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 y CGPointZero reemplazaron con CGRect.zero y CGPoint.zero en Swift 3.0 .


Bono Swift 3: ¿Por qué nadie mencionó la forma corta?

CGRect(origin: .zero, size: size)

.zero lugar de CGPoint.zero

Cuando se define el tipo, puede omitirlo de forma segura.


En Swift 4 funciona como a continuación

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


Solución rápida para CGRectMake, CGPointMake, CGSizeMake en Swift3 y iOS10

Agregue 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 ", encuentre CGRectMake, CGPointMake, CGSizeMake y reemplácelos con CGRect, CGPoint, CGSize

Estos pasos pueden ahorrar todo el tiempo ya que Xcode en este momento no nos da una conversión rápida de Swift 2+ a Swift 3