A normalized 2D point in a view's coordinate space.
Use a unit point to represent a location in a view without having to know
the view's rendered size. The point stores a value in each dimension that
indicates the fraction of the view's size in that dimension --- measured
from the view's origin --- where the point appears. For example, you can
create a unit point that represents the center of any view by using the
value `0.5` for each dimension:
let unitPoint = UnitPoint(x: 0.5, y: 0.5)
To project the unit point into the rendered view's coordinate space,
multiply each component of the unit point with the corresponding
component of the view's size:
let projectedPoint = CGPoint(
x: unitPoint.x * size.width,
y: unitPoint.y * size.height
)
You can perform this calculation yourself if you happen to know a view's
size, or if you want to use the unit point for some custom purpose, but
SwiftUI typically does this for you to carry out operations that
you request, like when you:
* Transform a shape using a shape modifier. For example, to rotate a
shape with ``Shape/rotation(_:anchor:)``, you indicate an anchor point
that you want to rotate the shape around.
* Override the alignment of the view in a ``Grid`` cell using the
``View/gridCellAnchor(_:)`` view modifier. The grid aligns the projection
of a unit point onto the view with the projection of the same unit point
onto the cell.
* Create a gradient that has a center, or start and stop points, relative
to the shape that you are styling. See the gradient methods in
``ShapeStyle``.
You can create custom unit points with explicit values, like the example
above, or you can use one of the built-in unit points that SwiftUI provides,
like ``zero``, ``center``, or ``topTrailing``. The built-in values
correspond to the alignment positions of the similarly named, built-in
``Alignment`` types.
> Note: A unit point with one or more components outside the range `[0, 1]`
projects to a point outside of the view.
### Layout direction
When a person configures their device to use a left-to-right language like
English, the system places the view's origin in its top-left corner,
with positive x toward the right and positive y toward the bottom of the
view. In a right-to-left environment, the origin moves to the upper-right
corner, and the positive x direction changes to be toward the left. You
don't typically need to do anything to handle this change, because SwiftUI
applies the change to all aspects of the system. For example, see the
discussion about layout direction in ``HorizontalAlignment``.
It’s important to test your app for the different locales that you
distribute your app in. For more information about the localization process,
see <doc://com.apple.documentation/documentation/Xcode/localization>.
Members (18)
get · iOS 13.0+
topLeading
TypeScript
static get topLeading(): UnitPoint
Swift declaration
static let topLeading: UnitPoint
A point that's in the top, leading corner of a view.
This point occupies the position where the horizontal and vertical
alignment guides intersect for ``Alignment/topLeading`` alignment.
The leading edge appears on the left in a left-to-right language
environment and on the right in a right-to-left environment.
get · iOS 13.0+
topTrailing
TypeScript
static get topTrailing(): UnitPoint
Swift declaration
static let topTrailing: UnitPoint
A point that's in the top, trailing corner of a view.
This point occupies the position where the horizontal and vertical
alignment guides intersect for ``Alignment/topTrailing`` alignment.
The trailing edge appears on the right in a left-to-right language
environment and on the left in a right-to-left environment.
get · iOS 13.0+
bottomLeading
TypeScript
static get bottomLeading(): UnitPoint
Swift declaration
static let bottomLeading: UnitPoint
A point that's in the bottom, leading corner of a view.
This point occupies the position where the horizontal and vertical
alignment guides intersect for ``Alignment/bottomLeading`` alignment.
The leading edge appears on the left in a left-to-right language
environment and on the right in a right-to-left environment.
get · iOS 13.0+
animatableData
TypeScript
get animatableData(): AnimatablePair<number, number>
Swift declaration
var animatableData: UnitPoint.AnimatableData { get set }
The data to animate.
SwiftUI reads this property to capture the current vector
representation of the animatable state, and writes it back
on each animation frame with an interpolated value. The
default implementation returns ``EmptyAnimatableData``,
meaning nothing is animated.
Use the ``Animatable()`` macro to synthesize this
property automatically. Implement it by hand only when
you need custom interpolation logic such as clamping,
normalization, or mapping to a derived value.
set · iOS 13.0+
animatableData
TypeScript
set animatableData(value: AnimatablePair<number, number>)
Swift declaration
var animatableData: UnitPoint.AnimatableData { get set }
The data to animate.
SwiftUI reads this property to capture the current vector
representation of the animatable state, and writes it back
on each animation frame with an interpolated value. The
default implementation returns ``EmptyAnimatableData``,
meaning nothing is animated.
Use the ``Animatable()`` macro to synthesize this
property automatically. Implement it by hand only when
you need custom interpolation logic such as clamping,
normalization, or mapping to a derived value.
get · iOS 13.0+
bottomTrailing
TypeScript
static get bottomTrailing(): UnitPoint
Swift declaration
static let bottomTrailing: UnitPoint
A point that's in the bottom, trailing corner of a view.
This point occupies the position where the horizontal and vertical
alignment guides intersect for ``Alignment/bottomTrailing`` alignment.
The trailing edge appears on the right in a left-to-right language
environment and on the left in a right-to-left environment.
get · iOS 13.0+
x
TypeScript
get x(): number
Swift declaration
var x: CGFloat
The normalized distance from the origin to the point in the horizontal
direction.
set · iOS 13.0+
x
TypeScript
set x(value: number)
Swift declaration
var x: CGFloat
The normalized distance from the origin to the point in the horizontal
direction.
init · iOS 13.0+
init
TypeScript
static initXY(x: number, y: number): UnitPoint
Swift declaration
init(x: CGFloat, y: CGFloat)
Creates a unit point with the specified horizontal and vertical offsets.
Values outside the range `[0, 1]` project to points outside of a view.
- Parameters:
- x: The normalized distance from the origin to the point in the
horizontal direction.
- y: The normalized distance from the origin to the point in the
vertical direction.
get · iOS 13.0+
y
TypeScript
get y(): number
Swift declaration
var y: CGFloat
The normalized distance from the origin to the point in the vertical
dimension.
set · iOS 13.0+
y
TypeScript
set y(value: number)
Swift declaration
var y: CGFloat
The normalized distance from the origin to the point in the vertical
dimension.
get · iOS 13.0+
top
TypeScript
static get top(): UnitPoint
Swift declaration
static let top: UnitPoint
A point that's centered horizontally on the top edge of a view.
This point occupies the position where the horizontal and vertical
alignment guides intersect for ``Alignment/top`` alignment.
get · iOS 13.0+
zero
TypeScript
static get zero(): UnitPoint
Swift declaration
static let zero: UnitPoint
The origin of a view.
A view's origin appears in the top-left corner in a left-to-right
language environment, with positive x toward the right. It appears in
the top-right corner in a right-to-left language, with positive x toward
the left. Positive y is always toward the bottom of the view.
get · iOS 13.0+
bottom
TypeScript
static get bottom(): UnitPoint
Swift declaration
static let bottom: UnitPoint
A point that's centered horizontally on the bottom edge of a view.
This point occupies the position where the horizontal and vertical
alignment guides intersect for ``Alignment/bottom`` alignment.
get · iOS 13.0+
center
TypeScript
static get center(): UnitPoint
Swift declaration
static let center: UnitPoint
A point that's centered in a view.
This point occupies the position where the horizontal and vertical
alignment guides intersect for ``Alignment/center`` alignment.
get · iOS 13.0+
leading
TypeScript
static get leading(): UnitPoint
Swift declaration
static let leading: UnitPoint
A point that's centered vertically on the leading edge of a view.
This point occupies the position where the horizontal and vertical
alignment guides intersect for ``Alignment/leading`` alignment.
The leading edge appears on the left in a left-to-right language
environment and on the right in a right-to-left environment.
get · iOS 13.0+
trailing
TypeScript
static get trailing(): UnitPoint
Swift declaration
static let trailing: UnitPoint
A point that's centered vertically on the trailing edge of a view.
This point occupies the position where the horizontal and vertical
alignment guides intersect for ``Alignment/trailing`` alignment.
The trailing edge appears on the right in a left-to-right language
environment and on the left in a right-to-left environment.
init · iOS 13.0+
init
TypeScript
static init(): UnitPoint
Swift declaration
init()
Creates a unit point at the origin.
A view's origin appears in the top-left corner in a left-to-right
language environment, with positive x toward the right. It appears in
the top-right corner in a right-to-left language, with positive x toward
the left. Positive y is always toward the bottom of the view.