Nu CGRectMake, CGPointMake, CGSizeMake, etc. is verwijderd in Swift 3.0, is er een manier om automatisch alle initialisaties bij te werken, zoals van CGRectMake(0,0,w,h) to CGRect(x:0,y:0,width:w,height:h)
. Handmatig proces is… best lastig.
Ik weet niet zeker waarom Apple dit niet automatisch converteert wanneer ik de code converteer naar Current Swift Syntax…
Antwoord 1, autoriteit 100%
De eenvoudigste oplossing is waarschijnlijk om de functies die Apple heeft weggenomen opnieuw te definiëren. Voorbeeld:
func CGRectMake(_ x: CGFloat, _ y: CGFloat, _ width: CGFloat, _ height: CGFloat) -> CGRect {
return CGRect(x: x, y: y, width: width, height: height)
}
Zet dat in je module en alle aanroepen naar CGRectMake
werken weer.
Antwoord 2, autoriteit 41%
Kort antwoord: niet doen. Laat Apple je niet de baas spelen. Ik haatCGRect(x:y:width:height:)
. Ik heb er een bug over ingediend. Ik denk dat de initialisatie CGRect(_:_:_:_:)
moet zijn, net als CGRectMake
. Ik heb een extensie gedefinieerd op CGRect die het levert, en plop die extensie in elk projectop het moment dat ik begin.
extension CGRect {
init(_ x:CGFloat, _ y:CGFloat, _ w:CGFloat, _ h:CGFloat) {
self.init(x:x, y:y, width:w, height:h)
}
}
Op die manier hoef ik alleen maar “CGRectMake” overal in “CGRect” te veranderen, en ik ben klaar.
Antwoord 3, autoriteit 24%
Apple biedt deze functie inderdaad. Het enige wat je hoeft te doen is naar:
Bewerken> Converteren> Naar de nieuwste Swift-syntaxis…
En volg dan de aanwijzingen op het scherm.
Dit lost uw syntaxisproblemen op en u hoeft geen nieuwe functies te maken voor alle verschillende verwijderde functies.