From 742d312756c2af0013e4eb988d1d0e201f958980 Mon Sep 17 00:00:00 2001 From: Kyle Date: Wed, 8 Oct 2025 16:47:25 +0800 Subject: [PATCH] Update TransitionTraitKey --- .../Transition/TransitionTraitKey.swift | 34 +++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/Sources/OpenSwiftUICore/Animation/Transition/TransitionTraitKey.swift b/Sources/OpenSwiftUICore/Animation/Transition/TransitionTraitKey.swift index 416f6f5d9..3f1eaa05c 100644 --- a/Sources/OpenSwiftUICore/Animation/Transition/TransitionTraitKey.swift +++ b/Sources/OpenSwiftUICore/Animation/Transition/TransitionTraitKey.swift @@ -2,9 +2,12 @@ // TransitionTraitKey.swift // OpenSwiftUICore // -// Audited for 6.0.87 -// Status: WIP +// Audited for 6.5.4 +// Status: Complete +// MARK: - ViewTraitCollection + canTransition + +@available(OpenSwiftUI_v1_0, *) @usableFromInline struct CanTransitionTraitKey: _ViewTraitKey { @inlinable @@ -20,3 +23,30 @@ extension ViewTraitCollection { set { self[CanTransitionTraitKey.self] = newValue } } } + +// MARK: - ViewTraitCollection + transition + +struct TransitionTraitKey: _ViewTraitKey { + static var defaultValue: AnyTransition { .opacity } +} + +extension ViewTraitCollection { + package var transition: AnyTransition { + self[TransitionTraitKey.self] + } + + package func optionalTransition(ignoringIdentity: Bool) -> AnyTransition? { + guard canTransition else { + return nil + } + let transition = transition + if ignoringIdentity, transition.isIdentity { + return nil + } + return transition + } + + package func optionalTransition() -> AnyTransition? { + optionalTransition(ignoringIdentity: true) + } +}