Полезные свойства CGRect, а также свойства UIView — UIView.frame и UIView.bounds
CGRect — это структура из точки CGPoint и размера CGSize
struct CGRect { var origin: CGPoint // верхний левый угол прямоугольника var size: CGSize }
У CGRect есть очень интересные свойства и методы
var minX: CGFloat // левый угол var midY: CGFloat // середина вертикали intersects(CGRect) -> Bool // пересекаются ли CGRect? intersect(CGRect) // обрезает CGRect до пересечения с другим прямоугольником contains(CGPoint) -> Bool // Проверяет вхождение точки в прямоугольник
UIView
Получить количество пикселей на точку.
var contentScaleFactor:CGFloat //возвращает значение пикселей/точку экрана, на котором находится view
Границы, в которых происходит рисование:
var bounds:CGRect // внутреннее пространство (origin и size) вашего view
Это прямоугольник, содержащий пространство для рисования в своей собственной системе координат, т.е. в системе координат самого view, у которого мы запросили это свойство.
Где находится UIView?
var center:CGPoint// центр вашего view в системе координат superview var frame:CGRect //прямоугольник в системе координат superview, который полностью содержит ваш view
Два последних свойства возвращают значение в системе координат родительского superview. Именно поэтому тут мы использовали конвертирование координат из системы одного view в систему координат другого.
Иллюстрация выше сказанного на этой картинке (картинка — кликабельна):
Точка в центре — это
CGPoint(x: blueView.bounds.width / 2, y: blueView.bounds.height / 2)
т.е. в системе координат голубого view, а точки по краям это
blueView.frame
т.е. в системе координат белого view.
Я написал приложение, в котором можно таскать и вращать голубое view. Если будет интересно поковырять его — пишите в комментариях — выложу на GitHub
Конечно выкладывай