unavailable getheight example cgsizemake cgrectgetwidth ios swift swift3 cgrectmake

ios - getheight - frame swift



Actualizar CGRectMake a CGRect en Swift 3 automáticamente (3)

Apple realmente proporciona esta característica. Todo lo que tienes que hacer es ir a:

Edición > Convertir > A la última sintaxis rápida ...

Y luego siga las instrucciones en pantalla.

Esto resolverá sus problemas de sintaxis y no tendrá que crear nuevas funciones para todas las funciones eliminadas.

Ahora que CGRectMake, CGPointMake, CGSizeMake, etc. se han eliminado en Swift 3.0, ¿hay alguna forma de actualizar automáticamente todas las inicializaciones, como CGRectMake(0,0,w,h) to CGRect(x:0,y:0,width:w,height:h) . El proceso manual es ... bastante doloroso.

No estoy seguro de por qué Apple no convierte automáticamente esto cuando convierto el código a la sintaxis Swift actual ...


La solución más simple es probablemente redefinir las funciones que Apple eliminó. Ejemplo:

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

Ponga eso en su módulo y todas las llamadas a CGRectMake volverán a funcionar.


Respuesta corta: no lo hagas. No dejes que Apple te mande. Odio CGRect(x:y:width:height:) . He presentado un error en él. Creo que el inicializador debería ser CGRect(_:_:_:_:) , al igual que CGRectMake . Definí una extensión en CGRect que la suministra, y coloco esa extensión en cada proyecto en el instante en que comienzo.

extension CGRect { init(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) { self.init(x:x, y:y, width:w, height:h) } }

De esa manera, todo lo que tengo que hacer es cambiar "CGRectMake" a "CGRect" en todas partes, y ya he terminado.