Post

iOS17 Animation Transition in ScrollView

iOS17 Animation Transition in ScrollView
1
2
3
4
5
6
7
8
9
10
11
12
13
ScrollView {
  VStack {
    ForEach(0 ..< 20) {
      i in
      Color.green
           .frame(width: 350, height: 200, alignment: .center)
           .cornerRadius(35)
           .scrollTransition(.interactive, axis: .vertical) { view, phase in
             view.opacity(phase.isIdentity? 0 : 1.0)
           }
    }
  }
}

view transition phase:

topLeading / bottomTrailing -> identity phase (visible area) ->

ScrollTransitionPhase.isIdentity

1
view.opacity(phase.isIdentity? 0 : 1.0)

will show something in edging area but nothing in visible center area.

1
view.opacity(phase.isIdentity? 1.0 : 0)

will show things become more solid from edging area.

ScrollTransitionPhase.value

A phase-derived value that can be used to scale or otherwise modify effects.

Discussion

Returns -1.0 when in the topLeading phase, zero when in the identity phase, and 1.0 when in the bottomTrailing phase.

1
view.opacity(phase.value < 0 ? 0 : 1.0)
This post is licensed under CC BY 4.0 by the author.