App Screen
Stackflow 네비게이션에서 개별 화면을 구성하는 컴포넌트입니다. 모바일 앱과 같은 화면 전환 경험을 제공할 때 사용됩니다.
Installation
의존성 설치
아래 코드를 복사 후 붙여넣고 사용하세요
Usage
Props
App Screen
AppScreen
Prop
Type
preventSwipeBack?boolean | undefinedonSwipeBackStart?(() => void) | undefinedonSwipeBackMove?((props: { displacement: number; displacementRatio: number; }) => void) | undefinedonSwipeBackEnd?((props: { swiped: boolean; }) => void) | undefinedAppScreenContent
Prop
Type
ptr?boolean | undefinedonPtrReady?(() => void) | undefinedonPtrRefresh?(() => Promise<void>) | undefinedApp Bar
AppBar
Prop
Type
background?ScopedColorBanner | ScopedColorBg | ScopedColorPalette | (string & {}) | undefinedAppBarLeft
Prop
Type
AppBarMain
Prop
Type
AppBarRight
Prop
Type
AppBarIconButton, AppBarBackButton, AppBarCloseButton
Prop
Type
AppBarTextButton
Prop
Type
Examples
Tones
AppScreen의 tone 속성을 transparent로 설정하여 투명한 배경을 사용할 수 있습니다.
AppBar의 배경이 투명해집니다.- 모바일 OS 상태바를 포함한
AppScreen상단에 그라디언트가 표시됩니다.gradient속성을false로 설정하여 숨길 수 있습니다.
With Intersection Observer
Intersection Observer를 사용해 AppBar의 tone 속성을 동적으로 변경할 수 있습니다.
Layer Offset Top
layerOffsetTop 속성을 사용해 AppScreenContent의 상단 오프셋을 조정할 수 있습니다.
tone="transparent"와 gradient를 사용하는 경우, 일반적으로 layerOffsetTop="none"을 함께 설정하여 모바일 OS 상태바 영역까지 콘텐츠 영역을 확장합니다.
safe area 처리에 필요한 viewport 설정은 Safe Area 구현 가이드를 참고하세요.



Safe Area
AppScreen은 기기의 safe area inset을 반영합니다.
- 상단과 하단 inset은
layerOffsetTop,layerOffsetBottom속성으로 조정합니다. - 좌우 inset은 항상 반영됩니다.
AppBar와AppScreenContent의 내용이 좌우 inset만큼 안쪽으로 들어가므로, 가로 모드처럼 좌우 inset이 있는 화면에서도 디스플레이 컷아웃에 가려지지 않습니다.
좌우 inset이 반영되므로 AppScreenContent 안의 요소는 화면 끝까지 닿지 않습니다. 이미지, 가로 스크롤 영역, 배경처럼 화면 끝까지 채워야 하는 요소는 inset만큼 다시 넓혀야 합니다. 구현 방법은 Safe Area 구현 가이드를 참고하세요.
요소를 safe area 안에 둘지, 화면 끝까지 채울지 정하는 기준은 Safe Area 패턴을 참고하세요.
Customizing App Bar
tone="layer"인 경우 AppBar의 색상을 변경할 수 있습니다.
AppBarIconButton 내에 Icon 컴포넌트를 사용하여 아이콘을 커스터마이징할 수 있습니다.
Icon
아이콘 컴포넌트에 대해 자세히 알아봅니다.
Text Button
AppBarTextButton은 "완료", "닫기"처럼 짧은 텍스트로 동작을 표시합니다. theme="cupertino"에서는 레이블이 최대 너비를 넘으면 말줄임표로 줄여 제목 영역을 확보합니다.
Custom Elements in App Bar
AppBar 내에 AppBarLeft, AppBarMain, AppBarRight에 대응되지 않는 커스텀 요소를 배치하는 경우, 다른 요소와 동일한 화면 전환 트랜지션을 적용하기 위해 AppBarSlot 컴포넌트를 사용합니다.
AppBarSlot은 하위 요소에 class를 주입하여 트랜지션을 적용하며, 추가 마크업은 생성하지 않습니다.
Preventing Swipe Back
preventSwipeBack 속성을 사용해 theme="cupertino"인 AppScreen에서 edge 영역을 렌더링하지 않음으로써 스와이프 백 제스처를 방지할 수 있습니다.
Transition Styles
transitionStyle 속성을 사용해 AppScreen이 최상위로 push되거나 최상위에서 pop될 때 재생할 트랜지션을 지정할 수 있습니다.
최상위: useActivity().isTop === true인 액티비티로 만들어진 AppScreen을
의미합니다.
별도로 지정하지 않는 경우, transitionStyle은 theme에 따른 기본값을 갖습니다.
theme="cupertino":slideFromRightIOStheme="android":fadeFromBottomAndroid
최상위 AppScreen이 push/pop될 때, 최상위가 아닌 AppScreen도 함께 트랜지션을 재생합니다.
@seed-design/[email protected]까지
최상위 AppScreen이 push/pop될 때, 최상위가 아닌 AppScreen은 각 AppScreen의 고유한 transitionStyle을 재생합니다.
- 예를 들면,
transitionStyle="fadeFromBottomAndroid"인 0번 AppScreen 위에transitionStyle="slideFromLeftIOS"인 1번 AppScreen이 push되는 경우, 0번 AppScreen은fadeFromBottomAndroid트랜지션을 재생합니다.- 0번 AppScreen이 위치 변화 없이 그대로 유지된 상태에서(
fadeFromBottomAndroid) 1번 AppScreen이 우측에서 슬라이드 인(slideFromLeftIOS)
- 0번 AppScreen이 위치 변화 없이 그대로 유지된 상태에서(
이후 버전
최상위 AppScreen이 push/pop될 때, 최상위가 아닌 AppScreen은 최상위 AppScreen의 transitionStyle을 재생합니다.
- 같은 스택 내에 여러
transitionStyle이 공존할 때 자연스러운 트랜지션을 제공합니다. - 예를 들면,
transitionStyle="fadeFromBottomAndroid"인 0번 AppScreen 위에transitionStyle="slideFromLeftIOS"인 1번 AppScreen이 push되는 경우, 0번 AppScreen은slideFromLeftIOS트랜지션을 재생합니다.- 0번 AppScreen이 자연스럽게 좌측으로 조금 밀려나며 어두워지고(
slideFromLeftIOS) 1번 AppScreen이 우측에서 슬라이드 인(slideFromLeftIOS)
- 0번 AppScreen이 자연스럽게 좌측으로 조금 밀려나며 어두워지고(
Last updated on