---
title: Scroll views
framework: swiftui
role: collectionGroup
role_heading: API Collection
path: swiftui/scroll-views
---

# Scroll views

Enable people to scroll to content that doesn’t fit in the current display.

## Overview

Overview When the content of a view doesn’t fit in the display, you can wrap the view in a ScrollView to enable people to scroll on one or more axes. Configure the scroll view using view modifiers. For example, you can set the visibility of the scroll indicators or the availability of scrolling in a given dimension.

You can put any view type in a scroll view, but you most often use a scroll view for a layout container with too many elements to fit in the display. For some container views that you put in a scroll view, like lazy stacks, the container doesn’t load views until they are visible or almost visible. For others, like regular stacks and grids, the container loads the content all at once, regardless of the state of scrolling. Lists and Tables implicitly include a scroll view, so you don’t need to add scrolling to those container types. However, you can configure their implicit scroll views with the same view modifiers that apply to explicit scroll views. For design guidance, see Scroll views in the Human Interface Guidelines.

## Topics

### Creating a scroll view

- [ScrollView](swiftui/scrollview.md)
- [ScrollViewReader](swiftui/scrollviewreader.md)
- [ScrollViewProxy](swiftui/scrollviewproxy.md)

### Managing scroll position

- [scrollPosition(_:anchor:)](swiftui/view/scrollposition(_:anchor:).md)
- [scrollPosition(id:anchor:)](swiftui/view/scrollposition(id:anchor:).md)
- [defaultScrollAnchor(_:)](swiftui/view/defaultscrollanchor(_:).md)
- [defaultScrollAnchor(_:for:)](swiftui/view/defaultscrollanchor(_:for:).md)
- [ScrollAnchorRole](swiftui/scrollanchorrole.md)
- [ScrollPosition](swiftui/scrollposition.md)

### Defining scroll targets

- [scrollTargetBehavior(_:)](swiftui/view/scrolltargetbehavior(_:).md)
- [scrollTargetLayout(isEnabled:)](swiftui/view/scrolltargetlayout(isenabled:).md)
- [ScrollTarget](swiftui/scrolltarget.md)
- [ScrollTargetBehavior](swiftui/scrolltargetbehavior.md)
- [ScrollTargetBehaviorContext](swiftui/scrolltargetbehaviorcontext.md)
- [PagingScrollTargetBehavior](swiftui/pagingscrolltargetbehavior.md)
- [ViewAlignedScrollTargetBehavior](swiftui/viewalignedscrolltargetbehavior.md)
- [AnyScrollTargetBehavior](swiftui/anyscrolltargetbehavior.md)
- [ScrollTargetBehaviorProperties](swiftui/scrolltargetbehaviorproperties.md)
- [ScrollTargetBehaviorPropertiesContext](swiftui/scrolltargetbehaviorpropertiescontext.md)

### Animating scroll transitions

- [scrollTransition(_:axis:transition:)](swiftui/view/scrolltransition(_:axis:transition:).md)
- [scrollTransition(topLeading:bottomTrailing:axis:transition:)](swiftui/view/scrolltransition(topleading:bottomtrailing:axis:transition:).md)
- [ScrollTransitionPhase](swiftui/scrolltransitionphase.md)
- [ScrollTransitionConfiguration](swiftui/scrolltransitionconfiguration.md)

### 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)
- [onScrollVisibilityChange(threshold:_:)](swiftui/view/onscrollvisibilitychange(threshold:_:).md)
- [onScrollPhaseChange(_:)](swiftui/view/onscrollphasechange(_:).md)
- [ScrollGeometry](swiftui/scrollgeometry.md)
- [ScrollPhase](swiftui/scrollphase.md)
- [ScrollPhaseChangeContext](swiftui/scrollphasechangecontext.md)

### Showing scroll indicators

- [scrollIndicatorsFlash(onAppear:)](swiftui/view/scrollindicatorsflash(onappear:).md)
- [scrollIndicatorsFlash(trigger:)](swiftui/view/scrollindicatorsflash(trigger:).md)
- [scrollIndicators(_:axes:)](swiftui/view/scrollindicators(_:axes:).md)
- [horizontalScrollIndicatorVisibility](swiftui/environmentvalues/horizontalscrollindicatorvisibility.md)
- [verticalScrollIndicatorVisibility](swiftui/environmentvalues/verticalscrollindicatorvisibility.md)
- [ScrollIndicatorVisibility](swiftui/scrollindicatorvisibility.md)

### Managing content visibility

- [scrollContentBackground(_:)](swiftui/view/scrollcontentbackground(_:).md)
- [scrollClipDisabled(_:)](swiftui/view/scrollclipdisabled(_:).md)
- [ScrollContentOffsetAdjustmentBehavior](swiftui/scrollcontentoffsetadjustmentbehavior.md)

### Disabling scrolling

- [scrollDisabled(_:)](swiftui/view/scrolldisabled(_:).md)
- [isScrollEnabled](swiftui/environmentvalues/isscrollenabled.md)

### Configuring scroll bounce behavior

- [scrollBounceBehavior(_:axes:)](swiftui/view/scrollbouncebehavior(_:axes:).md)
- [horizontalScrollBounceBehavior](swiftui/environmentvalues/horizontalscrollbouncebehavior.md)
- [verticalScrollBounceBehavior](swiftui/environmentvalues/verticalscrollbouncebehavior.md)
- [ScrollBounceBehavior](swiftui/scrollbouncebehavior.md)

### Configuring scroll edge effects

- [scrollEdgeEffectStyle(_:for:)](swiftui/view/scrolledgeeffectstyle(_:for:).md)
- [scrollEdgeEffectHidden(_:for:)](swiftui/view/scrolledgeeffecthidden(_:for:).md)
- [ScrollEdgeEffectStyle](swiftui/scrolledgeeffectstyle.md)
- [safeAreaBar(edge:alignment:spacing:content:)](swiftui/view/safeareabar(edge:alignment:spacing:content:).md)

### Interacting with a software keyboard

- [scrollDismissesKeyboard(_:)](swiftui/view/scrolldismisseskeyboard(_:).md)
- [scrollDismissesKeyboardMode](swiftui/environmentvalues/scrolldismisseskeyboardmode.md)
- [ScrollDismissesKeyboardMode](swiftui/scrolldismisseskeyboardmode.md)

### Managing scrolling for different inputs

- [scrollInputBehavior(_:for:)](swiftui/view/scrollinputbehavior(_:for:).md)
- [ScrollInputKind](swiftui/scrollinputkind.md)
- [ScrollInputBehavior](swiftui/scrollinputbehavior.md)

## See Also

### View layout

- [Layout fundamentals](swiftui/layout-fundamentals.md)
- [Layout adjustments](swiftui/layout-adjustments.md)
- [Custom layout](swiftui/custom-layout.md)
- [Lists](swiftui/lists.md)
- [Tables](swiftui/tables.md)
- [View groupings](swiftui/view-groupings.md)
