---
title: "onScrollVisibilityChange(threshold:_:)"
framework: swiftui
role: symbol
role_heading: Instance Method
path: "swiftui/view/onscrollvisibilitychange(threshold:_:)"
---

# onScrollVisibilityChange(threshold:_:)

Adds an action to be called when the view crosses the threshold to be considered on/off screen.

## Declaration

```swift
nonisolated func onScrollVisibilityChange(threshold: Double = 0.5, _ action: @escaping (Bool) -> Void) -> some View

```

## Parameters

- `threshold`: The amount required to be visible within the viewport of the parent view before the action is fired. By default when the view has crossed more than 50% on-screen, the action will be called.
- `action`: The action which will be called when the threshold has been reached.

## Discussion

Discussion Use this modifier to be informed when the view has crossed the provided threshold to be considered on/off screen. struct VideoPlayer: View {     @State var playing: Bool

var body: some View {         Group {             // ...         }         .onScrollVisibilityChange(threshold: 0.2) { isVisible in             playing = isVisible         }     } } When the view appears on-screen, the action will be called if the threshold has already been reached.

## See Also

### Responding to scroll view changes

- [onScrollGeometryChange(for:of:action:)](swiftui/view/onscrollgeometrychange(for:of:action:).md)
- [onScrollTargetVisibilityChange(idType:threshold:_:)](swiftui/view/onscrolltargetvisibilitychange(idtype:threshold:_:).md)
- [onScrollPhaseChange(_:)](swiftui/view/onscrollphasechange(_:).md)
- [ScrollGeometry](swiftui/scrollgeometry.md)
- [ScrollPhase](swiftui/scrollphase.md)
- [ScrollPhaseChangeContext](swiftui/scrollphasechangecontext.md)
