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.