gh-EmergeTools-Pow/Sources/Pow/Infrastructure/Scaled.swift
Joe Fabisevich 5b95fe95b0
Moving Pow to @emergetools (#36)
Co-authored-by: Robert Böhnke <robb@robb.is>
Co-authored-by: Kasper Lahti <kasper@lahti.email>
2023-11-29 12:08:53 -03:00

28 lines
653 B
Swift

import SwiftUI
/// Scales the domain of a View Modifier to avoid snapping when animating with a spring animation.
internal struct Scaled<V: ViewModifier & Animatable>: ViewModifier, Animatable {
var animatableData: V.AnimatableData {
get {
var v = base.animatableData
v.scale(by: 64)
return v
}
set {
var v = newValue
v.scale(by: 1 / 64)
base.animatableData = v
}
}
var base: V
init(_ base: V) {
self.base = base
}
func body(content: Content) -> some View {
content.modifier(base.animation(nil))
}
}