CGSize
CGSize
ma szerokość i wysokość. Nie jest technicznie uważany za prostokąt (co jest jednym z powodów, dla których początkowo myliłem go z CGRect
), ale raczej tylko wielkością. Jednakże, dla celów ilustracji, zostanie reprezentuję jako prostokąt poniżej:

Połączenie szerokości i hej jest znane jako struktury, co jest skrótem od struktury, i początkowo pochodzi od C (ale będę używał składni Swift zamiast Celu C tutaj). Struktura jest po prostu grupą powiązanych logicznie zmiennych. Widać tu strukturę CGSize
:
struct CGSize {
var width: CGFloat
var height: CGFloat
}
gdzie CGFloat
jest albo float
(32 bitów) lub double
(64 bitów). (Patrz What's the difference between using CGFloat and float?)
Można zrobić CGSize
wykonując następujące czynności:
var size = CGSize(width: 50, height: 30)
CGRect
CGRect
jest prostokątem. Jednak nazwa nie jest od razu oczywista, ponieważ oprócz szerokości i wysokości ma również swoje pochodzenie.

CGsize
, dla porównania, nie ma pochodzenie.
CGRect
to również struktura. Jeśli tak, to jest to struktura struktur: CGPoint
(początek) i CGSize
(szerokość i wysokość). Oto ona:
struct CGRect {
var origin: CGPoint
var size: CGSize
}
gdzie CGPoint
jest
struct CGPoint {
var x: CGFloat
var y: CGFloat
}
Można zrobić CGRect
wykonując następujące czynności:
var rect = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 50, height: 30))
Negatywna szerokość i wysokość
szerokość i wysokość wartości mogą być ujemne. Możemy zobaczyć, jak to wygląda z CGRect
.Zauważ, jak na różnych zakątków pojawia pochodzenie:

Wektory
documentation for CGSize mówi
CGSize
struktura jest czasem używane do reprezentowania wektora odległości, zamiast fizycznego rozmiaru. Jako wektor jego wartości mogą być ujemne. Aby znormalizować strukturę CGRect
, tak aby jej rozmiar był reprezentowany przez wartości dodatnie, wywołaj funkcję CGRectStandardize
.
Vectors w matematyce mają one wielkość (lub długość) i kierunek. Chociaż CGSize
nie ma początku, można zobaczyć na poniższym diagramie, w jaki sposób szerokość i wysokość wraz z powiązanymi wartościami dodatnimi lub ujemnymi określają zarówno długość, jak i kierunek.

Dalsze Reading
Świetne wyjaśnienie! – Haileapp