Maintenant que CGRectMake, CGPointMake, CGSizeMake, etc. ont été supprimés dans Swift 3.0, existe-t-il un moyen de mettre à jour automatiquement toutes les initialisations telles que de CGRectMake(0,0,w,h) to CGRect(x:0,y:0,width:w,height:h)
. Le processus manuel est .. assez pénible.
Vous ne savez pas pourquoi Apple ne convertit pas automatiquement cela lorsque je convertis le code en courant Swift Syntaxe ...
Apple fournit effectivement cette fonctionnalité. Tout ce que vous avez à faire est d'aller à:
Éditer > Convertir > en Latest Swift Syntax ...
Et suivez les instructions à l'écran.
Cela résoudra vos problèmes de syntaxe et vous n'aurez pas à créer de nouvelles fonctions pour toutes les fonctions supprimées.
La solution la plus simple consiste probablement simplement à redéfinir les fonctions que Apple a supprimées. Exemple:
func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect {
return CGRect(x: x, y: y, width: width, height: height)
}
Mettez cela dans votre module et tous les appels à CGRectMake
fonctionneront à nouveau.
Réponse courte: ne le fais pas. Ne laissez pas Apple vous contrôler. Je détesteCGRect(x:y:width:height:)
. J'ai déposé un bogue dessus. Je pense que l'initialiseur devrait être CGRect(_:_:_:_:)
, tout comme CGRectMake
. J'ai défini une extension sur CGRect qui la fournit et je l'ai intégrée dans chaque projet à l'instant où je commence.
extension CGRect {
init(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) {
self.init(x:x, y:y, width:w, height:h)
}
}
De cette façon, tout ce que j'ai à faire est de changer "CGRectMake" en "CGRect" partout, et j'ai terminé.