54 votes

Mettre à jour CGRectMake à CGRect dans Swift 3 automatiquement

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 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 Syntaxe actuelle de Swift ...

79voto

rob mayoff Points 124153

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.

32voto

matt Points 60113

Réponse courte: ne le fais pas. Ne laissez pas Apple vous diriger. Je déteste CGRect(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 à chaque projet dès que 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é.

19voto

WMios Points 1361

Apple ne fait offrir cette fonctionnalité. Tout ce que vous avez à faire est d'aller sur:

Modifier > Convertir > À La Dernière Swift Syntaxe...

enter image description here

Puis suivez les invites à l'écran.

Cela permettra de résoudre vos problèmes de syntaxe et vous n'aurez pas à faire de nouvelles fonctions pour tous les différents retiré fonctions.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X