Skip to content

Commit 76ae9c6

Browse files
Rename NavigationTransition to NavigationTransitionProtocol (#142)
Due to the recent iOS 18 update introducing a protocol named `NavigationTransition`, there was a naming conflict with our existing protocol used for smooth animation navigation in SwiftUI. To resolve this, I renamed our protocol to `NavigationTransitionProtocol` and updated all references accordingly. This change ensures compatibility with iOS 18 and avoids potential issues or confusion in the codebase. Merging this update will maintain seamless functionality across all SwiftUI navigation animations.
1 parent ddc7d42 commit 76ae9c6

File tree

16 files changed

+76
-76
lines changed

16 files changed

+76
-76
lines changed

Examples/Demo/Demo/Custom Transitions/Flip.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@ extension AnyNavigationTransition {
1111
}
1212
}
1313

14-
struct Flip: NavigationTransition {
14+
struct Flip: NavigationTransitionProtocol {
1515
var axis: Axis
1616

17-
var body: some NavigationTransition {
17+
var body: some NavigationTransitionProtocol {
1818
MirrorPush {
1919
Rotate3D(.degrees(180), axis: axis == .horizontal ? (x: 1, y: 0, z: 0) : (x: 0, y: 1, z: 0))
2020
}

Examples/Demo/Demo/Custom Transitions/Swing.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ extension AnyNavigationTransition {
77
}
88
}
99

10-
struct Swing: NavigationTransition {
11-
var body: some NavigationTransition {
10+
struct Swing: NavigationTransitionProtocol {
11+
var body: some NavigationTransitionProtocol {
1212
Slide(axis: .horizontal)
1313
MirrorPush {
1414
let angle = 70.0

Examples/Demo/Demo/Custom Transitions/Zoom.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ extension AnyNavigationTransition {
77
}
88
}
99

10-
struct Zoom: NavigationTransition {
11-
var body: some NavigationTransition {
10+
struct Zoom: NavigationTransitionProtocol {
11+
var body: some NavigationTransitionProtocol {
1212
MirrorPush {
1313
Scale(0.5)
1414
OnInsertion {

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,8 +77,8 @@ The library ships with some **standard transitions** out of the box:
7777
In addition to these, you can create fully [**custom transitions**](https://davdroman.github.io/swiftui-navigation-transitions/main/documentation/navigationtransitions/custom-transitions/) in just a few lines of SwiftUI-like code!
7878

7979
```swift
80-
struct Swing: NavigationTransition {
81-
var body: some NavigationTransition {
80+
struct Swing: NavigationTransitionProtocol {
81+
var body: some NavigationTransitionProtocol {
8282
Slide(axis: .horizontal)
8383
MirrorPush {
8484
let angle = 70.0

Sources/NavigationTransition/AnyNavigationTransition.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public struct AnyNavigationTransition {
2424
package let handler: Handler
2525
package var animation: Animation? = .default
2626

27-
public init(_ transition: some NavigationTransition) {
27+
public init(_ transition: some NavigationTransitionProtocol) {
2828
self.isDefault = false
2929
self.handler = .transient(transition.transition(from:to:for:in:))
3030
}

Sources/NavigationTransition/Combined.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ extension AnyNavigationTransition {
44
public func combined(with other: Self) -> Self {
55
switch (self.handler, other.handler) {
66
case (.transient(let lhsHandler), .transient(let rhsHandler)):
7-
struct Erased: NavigationTransition {
7+
struct Erased: NavigationTransitionProtocol {
88
let handler: AnyNavigationTransition.TransientHandler
99

1010
@inlinable
@@ -30,7 +30,7 @@ extension AnyNavigationTransition {
3030
}
3131
}
3232

33-
public struct Combined<TransitionA: NavigationTransition, TransitionB: NavigationTransition>: NavigationTransition {
33+
public struct Combined<TransitionA: NavigationTransitionProtocol, TransitionB: NavigationTransitionProtocol>: NavigationTransitionProtocol {
3434
private let transitionA: TransitionA
3535
private let transitionB: TransitionB
3636

Sources/NavigationTransition/Fade.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ extension AnyNavigationTransition {
88
}
99

1010
/// A transition that fades the pushed view in, fades the popped view out, or cross-fades both views.
11-
public struct Fade: NavigationTransition {
11+
public struct Fade: NavigationTransitionProtocol {
1212
public enum Style {
1313
case `in`
1414
case out
@@ -21,7 +21,7 @@ public struct Fade: NavigationTransition {
2121
self.style = style
2222
}
2323

24-
public var body: some NavigationTransition {
24+
public var body: some NavigationTransitionProtocol {
2525
switch style {
2626
case .in:
2727
MirrorPush {

Sources/NavigationTransition/Identity.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// For internal use only.
2-
struct Identity: NavigationTransition {
2+
struct Identity: NavigationTransitionProtocol {
33
init() {}
44

55
func transition(

Sources/NavigationTransition/Mirror.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import AtomicTransition
22

33
/// Used to define a transition that executes on push, and executes the mirrored version of said transition on pop.
4-
public struct MirrorPush<Transition: MirrorableAtomicTransition>: NavigationTransition {
4+
public struct MirrorPush<Transition: MirrorableAtomicTransition>: NavigationTransitionProtocol {
55
private let transition: Transition
66

77
public init(@AtomicTransitionBuilder transition: () -> Transition) {
88
self.transition = transition()
99
}
1010

11-
public var body: some NavigationTransition {
11+
public var body: some NavigationTransitionProtocol {
1212
OnPush {
1313
transition
1414
}
@@ -22,14 +22,14 @@ extension MirrorPush: Equatable where Transition: Equatable {}
2222
extension MirrorPush: Hashable where Transition: Hashable {}
2323

2424
/// Used to define a transition that executes on pop, and executes the mirrored version of said transition on push.
25-
public struct MirrorPop<Transition: MirrorableAtomicTransition>: NavigationTransition {
25+
public struct MirrorPop<Transition: MirrorableAtomicTransition>: NavigationTransitionProtocol {
2626
private let transition: Transition
2727

2828
public init(@AtomicTransitionBuilder transition: () -> Transition) {
2929
self.transition = transition()
3030
}
3131

32-
public var body: some NavigationTransition {
32+
public var body: some NavigationTransitionProtocol {
3333
OnPush {
3434
transition.mirrored()
3535
}

Sources/NavigationTransition/NavigationTransitionBuilder.swift

Lines changed: 35 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,25 @@
11
@resultBuilder
22
public enum NavigationTransitionBuilder {
33
#if compiler(>=5.7)
4-
public static func buildPartialBlock<T1: NavigationTransition>(first: T1) -> T1 {
4+
public static func buildPartialBlock<T1: NavigationTransitionProtocol>(first: T1) -> T1 {
55
first
66
}
77

8-
public static func buildPartialBlock<T1: NavigationTransition, T2: NavigationTransition>(accumulated: T1, next: T2) -> Combined<T1, T2> {
8+
public static func buildPartialBlock<T1: NavigationTransitionProtocol, T2: NavigationTransitionProtocol>(accumulated: T1, next: T2) -> Combined<T1, T2> {
99
Combined(accumulated, next)
1010
}
1111
#else
1212
public static func buildBlock<
13-
T1: NavigationTransition
13+
T1: NavigationTransitionProtocol
1414
>(
1515
_ t1: T1
1616
) -> T1 {
1717
t1
1818
}
1919

2020
public static func buildBlock<
21-
T1: NavigationTransition,
22-
T2: NavigationTransition
21+
T1: NavigationTransitionProtocol,
22+
T2: NavigationTransitionProtocol
2323
>(
2424
_ t1: T1,
2525
_ t2: T2
@@ -28,9 +28,9 @@ public enum NavigationTransitionBuilder {
2828
}
2929

3030
public static func buildBlock<
31-
T1: NavigationTransition,
32-
T2: NavigationTransition,
33-
T3: NavigationTransition
31+
T1: NavigationTransitionProtocol,
32+
T2: NavigationTransitionProtocol,
33+
T3: NavigationTransitionProtocol
3434
>(
3535
_ t1: T1,
3636
_ t2: T2,
@@ -40,10 +40,10 @@ public enum NavigationTransitionBuilder {
4040
}
4141

4242
public static func buildBlock<
43-
T1: NavigationTransition,
44-
T2: NavigationTransition,
45-
T3: NavigationTransition,
46-
T4: NavigationTransition
43+
T1: NavigationTransitionProtocol,
44+
T2: NavigationTransitionProtocol,
45+
T3: NavigationTransitionProtocol,
46+
T4: NavigationTransitionProtocol
4747
>(
4848
_ t1: T1,
4949
_ t2: T2,
@@ -54,11 +54,11 @@ public enum NavigationTransitionBuilder {
5454
}
5555

5656
public static func buildBlock<
57-
T1: NavigationTransition,
58-
T2: NavigationTransition,
59-
T3: NavigationTransition,
60-
T4: NavigationTransition,
61-
T5: NavigationTransition
57+
T1: NavigationTransitionProtocol,
58+
T2: NavigationTransitionProtocol,
59+
T3: NavigationTransitionProtocol,
60+
T4: NavigationTransitionProtocol,
61+
T5: NavigationTransitionProtocol
6262
>(
6363
_ t1: T1,
6464
_ t2: T2,
@@ -70,12 +70,12 @@ public enum NavigationTransitionBuilder {
7070
}
7171

7272
public static func buildBlock<
73-
T1: NavigationTransition,
74-
T2: NavigationTransition,
75-
T3: NavigationTransition,
76-
T4: NavigationTransition,
77-
T5: NavigationTransition,
78-
T6: NavigationTransition
73+
T1: NavigationTransitionProtocol,
74+
T2: NavigationTransitionProtocol,
75+
T3: NavigationTransitionProtocol,
76+
T4: NavigationTransitionProtocol,
77+
T5: NavigationTransitionProtocol,
78+
T6: NavigationTransitionProtocol
7979
>(
8080
_ t1: T1,
8181
_ t2: T2,
@@ -88,13 +88,13 @@ public enum NavigationTransitionBuilder {
8888
}
8989

9090
public static func buildBlock<
91-
T1: NavigationTransition,
92-
T2: NavigationTransition,
93-
T3: NavigationTransition,
94-
T4: NavigationTransition,
95-
T5: NavigationTransition,
96-
T6: NavigationTransition,
97-
T7: NavigationTransition
91+
T1: NavigationTransitionProtocol,
92+
T2: NavigationTransitionProtocol,
93+
T3: NavigationTransitionProtocol,
94+
T4: NavigationTransitionProtocol,
95+
T5: NavigationTransitionProtocol,
96+
T6: NavigationTransitionProtocol,
97+
T7: NavigationTransitionProtocol
9898
>(
9999
_ t1: T1,
100100
_ t2: T2,
@@ -108,24 +108,24 @@ public enum NavigationTransitionBuilder {
108108
}
109109
#endif
110110

111-
public static func buildOptional<T: NavigationTransition>(_ component: T?) -> _OptionalTransition<T> {
111+
public static func buildOptional<T: NavigationTransitionProtocol>(_ component: T?) -> _OptionalTransition<T> {
112112
if let component {
113113
return _OptionalTransition(component)
114114
} else {
115115
return _OptionalTransition(nil)
116116
}
117117
}
118118

119-
public static func buildEither<TrueTransition: NavigationTransition, FalseTransition: NavigationTransition>(first component: TrueTransition) -> _ConditionalTransition<TrueTransition, FalseTransition> {
119+
public static func buildEither<TrueTransition: NavigationTransitionProtocol, FalseTransition: NavigationTransitionProtocol>(first component: TrueTransition) -> _ConditionalTransition<TrueTransition, FalseTransition> {
120120
_ConditionalTransition(trueTransition: component)
121121
}
122122

123-
public static func buildEither<TrueTransition: NavigationTransition, FalseTransition: NavigationTransition>(second component: FalseTransition) -> _ConditionalTransition<TrueTransition, FalseTransition> {
123+
public static func buildEither<TrueTransition: NavigationTransitionProtocol, FalseTransition: NavigationTransitionProtocol>(second component: FalseTransition) -> _ConditionalTransition<TrueTransition, FalseTransition> {
124124
_ConditionalTransition(falseTransition: component)
125125
}
126126
}
127127

128-
public struct _OptionalTransition<Transition: NavigationTransition>: NavigationTransition {
128+
public struct _OptionalTransition<Transition: NavigationTransitionProtocol>: NavigationTransitionProtocol {
129129
private let transition: Transition?
130130

131131
init(_ transition: Transition?) {
@@ -142,7 +142,7 @@ public struct _OptionalTransition<Transition: NavigationTransition>: NavigationT
142142
}
143143
}
144144

145-
public struct _ConditionalTransition<TrueTransition: NavigationTransition, FalseTransition: NavigationTransition>: NavigationTransition {
145+
public struct _ConditionalTransition<TrueTransition: NavigationTransitionProtocol, FalseTransition: NavigationTransitionProtocol>: NavigationTransitionProtocol {
146146
private typealias Transition = _Either<TrueTransition, FalseTransition>
147147
private let transition: Transition
148148

Sources/NavigationTransition/NavigationTransition.swift renamed to Sources/NavigationTransition/NavigationTransitionProtocol.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import UIKit
77
///
88
/// Although the library ships with a set of predefined transitions (e.g. ``Slide``, one can also create
99
/// entirely new, fully customizable transitions by conforming to this protocol.
10-
public protocol NavigationTransition {
10+
public protocol NavigationTransitionProtocol {
1111
/// Typealias for `AnimatorTransientView`.
1212
typealias TransientView = AnimatorTransientView
1313
/// Typealias for `NavigationTransitionOperation`.
@@ -54,7 +54,7 @@ public protocol NavigationTransition {
5454
var body: Body { get }
5555
}
5656

57-
extension NavigationTransition where Body: NavigationTransition {
57+
extension NavigationTransitionProtocol where Body: NavigationTransitionProtocol {
5858
/// Invokes ``body``'s implementation of ``transition(from:to:for:in:)-211yh``.
5959
@inlinable
6060
public func transition(
@@ -67,7 +67,7 @@ extension NavigationTransition where Body: NavigationTransition {
6767
}
6868
}
6969

70-
extension NavigationTransition where Body == Never {
70+
extension NavigationTransitionProtocol where Body == Never {
7171
/// A non-existent body.
7272
///
7373
/// > Warning: Do not invoke this property directly. It will trigger a fatal error at runtime.

Sources/NavigationTransition/On.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import AtomicTransition
22

33
/// Used to define a transition that executes only on push.
4-
public struct OnPush<Transition: AtomicTransition>: NavigationTransition {
4+
public struct OnPush<Transition: AtomicTransition>: NavigationTransitionProtocol {
55
private let transition: Transition
66

77
public init(@AtomicTransitionBuilder transition: () -> Transition) {
@@ -28,7 +28,7 @@ extension OnPush: Equatable where Transition: Equatable {}
2828
extension OnPush: Hashable where Transition: Hashable {}
2929

3030
/// Used to define a transition that executes only on pop.
31-
public struct OnPop<Transition: AtomicTransition>: NavigationTransition {
31+
public struct OnPop<Transition: AtomicTransition>: NavigationTransitionProtocol {
3232
private let transition: Transition
3333

3434
public init(@AtomicTransitionBuilder transition: () -> Transition) {

Sources/NavigationTransition/Pick.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
/// Used to isolate the push portion of a full `NavigationTransition` and execute it on push, ignoring the pop portion.
2-
public struct PickPush<Transition: NavigationTransition>: NavigationTransition {
1+
/// Used to isolate the push portion of a full `NavigationTransitionProtocol` and execute it on push, ignoring the pop portion.
2+
public struct PickPush<Transition: NavigationTransitionProtocol>: NavigationTransitionProtocol {
33
private let transition: Transition
44

55
public init(@NavigationTransitionBuilder transition: () -> Transition) {
@@ -24,8 +24,8 @@ public struct PickPush<Transition: NavigationTransition>: NavigationTransition {
2424
extension PickPush: Equatable where Transition: Equatable {}
2525
extension PickPush: Hashable where Transition: Hashable {}
2626

27-
/// Used to isolate the pop portion of a full `NavigationTransition` and execute it on pop, ignoring the push portion.
28-
public struct PickPop<Transition: NavigationTransition>: NavigationTransition {
27+
/// Used to isolate the pop portion of a full `NavigationTransitionProtocol` and execute it on pop, ignoring the push portion.
28+
public struct PickPop<Transition: NavigationTransitionProtocol>: NavigationTransitionProtocol {
2929
private let transition: Transition
3030

3131
public init(@NavigationTransitionBuilder transition: () -> Transition) {

Sources/NavigationTransition/PrimitiveNavigationTransition.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import UIKit
66
/// This protocol variant is used to implement transitions that need to interact with raw UIKit transitioning entities.
77
///
88
/// - Warning: Usage of this initializer is highly discouraged unless you know what you're doing.
9-
/// Conform to ``NavigationTransition`` instead to ensure correct transition behavior.
9+
/// Conform to ``NavigationTransitionProtocol`` instead to ensure correct transition behavior.
1010
public protocol PrimitiveNavigationTransition {
1111
/// Typealias for `NavigationTransitionOperation`.
1212
typealias TransitionOperation = NavigationTransitionOperation

Sources/NavigationTransition/Slide.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ extension AnyNavigationTransition {
2525
/// This transition:
2626
/// - Pushes views right-to-left and pops views left-to-right when `axis` is `horizontal`.
2727
/// - Pushes views bottom-to-top and pops views top-to-bottom when `axis` is `vertical`.
28-
public struct Slide: NavigationTransition {
28+
public struct Slide: NavigationTransitionProtocol {
2929
private let axis: Axis
3030

3131
public init(axis: Axis) {
@@ -38,7 +38,7 @@ public struct Slide: NavigationTransition {
3838
self.init(axis: .horizontal)
3939
}
4040

41-
public var body: some NavigationTransition {
41+
public var body: some NavigationTransitionProtocol {
4242
switch axis {
4343
case .horizontal:
4444
MirrorPush {

0 commit comments

Comments
 (0)