Drehen Sie dazu die zwei CGPoints in einem CGRect
Wie kann ich, da zwei verschiedene CGPoints
biegen Sie in eine CGRect
?
Beispiel:
CGPoint p1 = CGPointMake(0,10);
CGPoint p2 = CGPointMake(10,0);
Wie kann ich diesen in einen CGRect
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese nehmen zwei beliebige Punkte und geben Sie die CGRect, das hat Sie als gegenüberliegende Ecken.
Den kleineren x-Wert, gepaart mit den kleineren y-Wert wird immer der Ursprung des rect (die ersten beiden Argumente). Der absolute Wert der Differenz zwischen x-Werten wird die Breite, und zwischen y-Werte die Höhe.
CGFloat
s sind in doppelter Größe, nicht schwimmen Größe, so dass Sie verlieren würden, Informationen, wenn Sie verwendet werdenfabsf
.r
nicht enthalten, werden entweder von den Punkte-angeboten in Frage. EinCGRect
'smaxX
undmaxY
werden nicht aufgenommen in das Rechteck, und Punkte, die entlang dieser Grenze scheitern wirdCGRectContainsPoint
Eine leichte Modifikation von Ken ' s Antwort. Lassen Sie CGGeometry "Standardisierung" des REK für Sie.
CGRect rect = CGRectStandardize(CGRectMake(p1.x, p1.y, p2.x - p1.x, p2.y - p1.y));
Angenommen, p1 ist der Ursprung und der andere Punkt ist die gegenüberliegende Ecke eines Rechtecks, Sie könnten dies tun:
fabs
. Aber dann sind Sie eine Art machen, die Anrufer haben die harte Arbeit im Voraus.Diese Funktion nimmt eine beliebige Anzahl von CGPoints und gibt Sie der kleinsten CGRect zurück.
Diese Rückkehr wird ein Rechteck der Breite oder Höhe auf 0, wenn die beiden Punkte auf einer Linie
Swift-Erweiterung: