CoreGraphics Geometry Primitives

CGVector isn’t widely used in view programming; instead, CGSize values are typically used to express positional vectors. Unfortunately, this can result in awkward semantics, because sizes may have negative width and / or height components (in which case a rectangle is extended in the opposite direction along that dimension).

nshipster.com/cggeometry/

The article provides a concise guide to Core Graphics geometry types in Swift, essential for Quartz 2D drawing on Apple platforms, covering CGFloat, CGPoint, CGVector, CGSize, and CGRect, with iOS using a top-left origin and macOS a bottom-left origin by default.

Developers can access and mutate properties like point.x or rectangle.width, but computed properties like width are read-only, while minX, midX, maxX, minY, midY, and maxY offer positional insights, and a custom center extension can be added.

Normalisation methods like standardized ensure non-negative rectangle dimensions, and integral aligns to pixel boundaries to avoid blurry rendering. Transformations include offsetBy(dx:dy:) for translation and insetBy(dx:dy:) for contracting or expanding rectangles, with CGAffineTransform supporting complex operations. Special values like CGPoint.zero, CGRect.infinite, and CGRect.null handle edge cases, while intersects(_:) and union(_:) manage rectangle relationships, enabling precise UI design with Swift’s clear syntax and safety features.


Category:

Tag:

Year: