From ea42fcf15aba3d530b63a38c1e3189f7a0ff96b8 Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Thu, 11 Jun 2026 14:28:08 +0200 Subject: [PATCH] fix(apple/tvOS): spring-driven slide transition MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The slide now runs on UISpringTimingParameters (stiffness 300, damping 30 — a ~0.87 damping ratio: settles quickly with a hint of life, no overshoot ping-pong) via the transition library's .interpolatingSpring animation. Co-Authored-By: Claude Fable 5 --- clients/apple/Sources/PunktfunkClient/ContentView.swift | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/clients/apple/Sources/PunktfunkClient/ContentView.swift b/clients/apple/Sources/PunktfunkClient/ContentView.swift index ce8d968..1a853ad 100644 --- a/clients/apple/Sources/PunktfunkClient/ContentView.swift +++ b/clients/apple/Sources/PunktfunkClient/ContentView.swift @@ -187,7 +187,10 @@ struct ContentView: View { #if os(tvOS) // The Settings-app slide for every push in this stack (top-level routes AND // the pickers' drill-ins) — SwiftUI's default on tvOS is a bare crossfade. - .customNavigationTransition(.slide) + // Spring-driven (UISpringTimingParameters): ~0.87 damping ratio — settles fast + // with just a hint of life, no visible overshoot ping-pong. + .customNavigationTransition( + .slide.animation(.interpolatingSpring(stiffness: 300, damping: 30))) #endif #if !os(tvOS) .sheet(isPresented: $showAddHost) {