CGSize
CGSize
представляет собой ширину и высоту. Это не технически считается прямоугольником (это одна из причин, почему я смутил его с CGRect
в начале), а скорее просто размером. Тем не менее, с целью иллюстрации, я буду представлять его в виде прямоугольника ниже:
Такое сочетание ширины и Heigh известна как структура, которая является коротким для структуры, и первоначально исходит от C (но я буду использовать синтаксис Swift, а не Objective C). Структура - это всего лишь группа логически связанных переменных. Здесь мы можем увидеть CGSize
структуру:
struct CGSize {
var width: CGFloat
var height: CGFloat
}
, где CGFloat
является либо float
(32 бит) или double
(64 бит). (См What's the difference between using CGFloat and float?)
Вы можете сделать CGSize
, выполнив следующие действия:
var size = CGSize(width: 50, height: 30)
CGRect
CGRect
представляет собой прямоугольник. То, что не сразу видно из названия, заключается в том, что в дополнение к ширине и высоте оно также имеет начало.
CGsize
сравнения, не имеет происхождение.
CGRect
также является структурой. Если факт, это структура структур: CGPoint
(источник) и CGSize
(ширина и высота). Вот оно:
struct CGRect {
var origin: CGPoint
var size: CGSize
}
где CGPoint
является
struct CGPoint {
var x: CGFloat
var y: CGFloat
}
Вы можете сделать CGRect
, выполнив следующие действия:
var rect = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: 50, height: 30))
Отрицательная ширина и высота
Ширина и высота значения могут быть отрицательными. Мы можем видеть, как это выглядит с CGRect
.Обратите внимание, как на разных углах появляется происхождение:
Vectors
documentation for CGSize говорит
CGSize
структура иногда используется для представления вектора расстояния, а не физический размер. В качестве вектора его значения могут быть отрицательными. Чтобы нормализовать структуру CGRect
, чтобы ее размер был представлен положительными значениями, вызовите функцию CGRectStandardize
.
Vectors в математике имеют величину (или длину) и направление. Хотя CGSize
не имеет источника, на следующей диаграмме видно, как ширина и высота вместе с их положительными или отрицательными значениями дают как длину, так и направление.
Дополнительная литература
Great Explanation! – Haileapp