A wrapper of the underlying observable object that can create bindings to
its properties using dynamic member lookup.
Returns a binding to the resulting value of a given key path.
- Parameter keyPath : A key path to a specific resulting value.
- Returns: A new binding.
Creates an observed object with an initial value.
- Parameter initialValue: An initial value.
Creates an observed object with an initial wrapped value.
You don't call this initializer directly. Instead, declare a property
with the `@ObservedObject` attribute, and provide an initial value.
- Parameter wrappedValue: An initial value.
The underlying value referenced by the observed object.
This property provides primary access to the value's data. However, you
don't access `wrappedValue` directly. Instead, you use the property
variable created with the `@ObservedObject` attribute.
When a mutable value changes, the new value is immediately available.
However, a view displaying the value is updated asynchronously and may
not show the new value immediately.
A projection of the observed object that creates bindings to its
properties using dynamic member lookup.
Use the projected value to pass a binding value down a view hierarchy.
To get the `projectedValue`, prefix the property variable with `$`.
A shape with a translation offset transform applied to it.
An offset shape has two use cases:
1. Used directly via its initializer ``RotatedShape/init(shape:offset:)``.
2. The return value of ``Shape/offset(_:)`` and ``Shape/offset(x:y:)``.
Having an offset shape is helpful because it allows you to translate a shape
and then continue to use its shape properties, instead of turning into ``View``.
A simple example of constructing an ``OffsetShape``:
```
struct OffsetShapeView: View {
var body: some View {
OffsetShape(shape: Circle(),
offset: CGSize(width: 20, height: 20))
}
}
```
