CGRectMake automatisch bijwerken naar CGRect in Swift 3

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 CGRectMakewerken 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…

voer hier de afbeeldingsbeschrijving in

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.

Other episodes