CGSize
CGSize
è una larghezza e un'altezza. Non è tecnicamente considerato un rettangolo (che è uno dei motivi per cui l'ho confuso con CGRect
all'inizio), ma piuttosto solo una dimensione. Tuttavia, a scopo illustrativo, io rappresentare come un rettangolo sotto:
Questa combinazione di larghezza e altezza è nota come una struttura, che è l'abbreviazione di struttura, ed originalmente proviene dal C lingua (ma userò la sintassi Swift piuttosto che Objective C qui). Una struttura è solo un gruppo di variabili logicamente correlate. Qui si può vedere la struttura CGSize
:
struct CGSize {
var width: CGFloat
var height: CGFloat
}
dove CGFloat
è o un float
(32 bit) o (bit 64) double
. (Vedere What's the difference between using CGFloat and float?)
si può fare una CGSize
effettuando le seguenti operazioni:
var size = CGSize(width: 50, height: 30)
CGRect
CGRect
è un rettangolo. Ciò che non è immediatamente ovvio dal nome, però, è che oltre a una larghezza e un'altezza, ha anche un'origine.
CGsize
, in confronto, non ha un'origine.
CGRect
è anche una struttura. Se è vero, è una struttura di strutture: uno CGPoint
(l'origine) e lo CGSize
(la larghezza e l'altezza). Eccolo:
struct CGRect {
var origin: CGPoint
var size: CGSize
}
dove CGPoint
è
struct CGPoint {
var x: CGFloat
var y: CGFloat
}
si può fare una CGRect
effettuando le seguenti operazioni:
var rect = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 50, height: 30))
larghezza negativa e l'altezza
La larghezza e l'altezza i valori possono essere negativi. Possiamo vedere come si presenta con CGRect
.Notate come appare l'origine in diversi angoli:
Vettori
Il documentation for CGSize dice
Una struttura CGSize
è talvolta usato per rappresentare un vettore di distanza, piuttosto che una dimensione fisica. Come vettore, i suoi valori possono essere negativi. Per normalizzare una struttura CGRect
in modo che la sua dimensione sia rappresentata da valori positivi, chiamare la funzione CGRectStandardize
.
Vectors in matematica hanno una grandezza (o lunghezza) e una direzione. Sebbene CGSize
non abbia un'origine, dal diagramma seguente è possibile vedere come la larghezza e l'altezza insieme ai relativi valori positivi o negativi forniscono sia la lunghezza che la direzione.
Letture
Grande spiegazione! – Haileapp